2012-12-01 91 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>'; 
    } 
    ?>