2012-12-01 114 views
0

我有一個多維數組,當我使用的print_r是這樣的:PHP回聲多維數組

Array ( 

[car] => Array ( 
      [72] => Camry 
      [62] => Lexus 
      [55] => honda 
      [44] => toyota 
       ) 

[Job] => Array ( 
      [70] => Bookstore 
      [73] => Cafe 
       ) 

[City] => Array ( 
      [68] => Wisconsin 
      [63] => Chicago 
      [47] => New York City 
      [46] => Los Angeles 
       ) 
) 

這是一個父/子多維數組。可以有任何數量的父母和任何數量的孩子。

如何回聲出一個多維數組,這樣它看起來像這樣

Car 
    Camry 
    Lexus 
    honda 
    toyota 

Job 
    Bookstore 
    Cafe 

City 
    Wisconsin 
    Chicago 
    New York City 
    Los Angeles 

我嘗試在打印多維數組了:

function RecursiveWrite($array) { 
         foreach ($array as $vals) { 
          echo $vals['parent'] . "\n"; 
          RecursiveWrite($vals['child']); 
         } 
        }  
RecursiveWrite($categories); // $categories is the name of the array 

這不會打印出任何時候輸出我運行代碼。有什麼建議麼?

+0

顯示你的代碼。 –

+0

究竟想要回顯它嗎?它是一個html表格還是一些頁面?如果你從數據庫中取出它,你將需要一個'foreach'或'while'循環來逐一打印它們。 – KillABug

+0

這是來自一個數據庫,我在一個div而不是表格中迴應這個問題。 – r1nzler

回答

1

考慮到標籤和返回符號依賴於任何你想在這裏的HTML或文件輸出這是代碼:

$tab = "\t"; // tab 
$return = "\r"; // return 

foreach ($array as $key => $a) { 
    echo $key.$return; 
    foreach ($a as $value) { 
     echo $tab.$value.$return; 
    } 
} 
+0

嘿,這個作品很棒!非常感謝! – r1nzler

1

創建一個遞歸函數:

半僞:

function dumpArr (arr){ 
    foreach element in arr { 
    if element is array/object{ 
     dumpArr(element) 
    }else{ 
     echo element 
    } 
    } 
} 

然後,您可以使用CSS來調整填充,邊距等

0

下面的代碼顯示你想要的:

<?php 
$arrayToPrint = Array (
     'car' => Array ( 
     '72' => 'Camry', 
     '62' => 'Lexus', 
     '55' => 'honda', 
     '44' => 'toyota' 
     ), 
     'Job' => Array ( 
     '70' => 'Bookstore', 
     '73' => 'Cafe' 
     ) , 
     'City' => Array ( 
     '68' => 'Wisconsin', 
     '63' => 'Chicago' , 
     '47' => 'New York City', 
     '46' => 'Los Angeles' 
     ) 
    ) ; 
    echo "output in print_r():<pre>"; 
    print_r($arrayToPrint); 
    echo "</pre>"; 
    echo "output in echo:<br/>"; 
    foreach($arrayToPrint as $arrayKey=> $arrayValue1) { 
     echo '<pre>'; 
     echo $arrayKey; 
      foreach($arrayValue1 as $leafNodeValue) { 
       echo '<pre> '.$leafNodeValue.'</pre>'; 
      } 
     echo '</pre>'; 
    } 
    ?>