PHP递归使用键打印多维数组的所有元素

use*_*871 3 php arrays multidimensional-array

我找到了以下代码,它可以打印出数组中的所有元素.如何修改它以打印一次键,然后是键对应的所有值,然后是另一个键,那么所有与键对应的值?我也想修改它,因此它只打印每个键的前9个值(不超过这个值).

 function printAll($a) {
  if (!is_array($a)) {
    echo $a, ' ';
     return;
   }

   foreach($a as $v) {
   printAll($v);
  }
 }
Run Code Online (Sandbox Code Playgroud)

Al *_*gam 7

我假设你想要一些非编程人类可以从某种意义上做出某种意义.

function pretty_dump($arr, $d=1){
    if ($d==1) echo "<pre>";    // HTML Only
    if (is_array($arr)){
        foreach($arr as $k=>$v){
            for ($i=0;$i<$d;$i++){
                echo "\t";
            }
            if (is_array($v)){
                echo $k.PHP_EOL;
                Pretty_Dump($v, $d+1);
            } else {
                echo $k."\t".$v.PHP_EOL;
            }
        }
    }
    if ($d==1) echo "</pre>";   // HTML Only
}
Run Code Online (Sandbox Code Playgroud)

用法:

$myarray=array(
    'mammals'=>array(
        'cats'=>array(
            'cheetah',
            'lion',
            'cougar'
        ),
        'dogs'=>array(
            'big'=>'Scooby',
            'small'=>'chihuahua',
            'medium'=>array(
                'pumi',
                'bulldog',
                'boxer'
            )
        ),
    ),
    'fish'=>'fish',
    'birds'=>array(
        'flying'=>array(
            'mallard',
            'condor',
            'gull'
        ),
        'nonflying'=>'emu'
    )
);

pretty_dump($myarray);
Run Code Online (Sandbox Code Playgroud)

输出:

    mammals
        cats
            0   cheetah
            1   lion
            2   cougar
        dogs
            big Scooby
            small   chihuahua
            medium
                0   pumi
                1   bulldog
                2   boxer
    fish    fish
    birds
        flying
            0   mallard
            1   condor
            2   gull
        nonflying   emu
Run Code Online (Sandbox Code Playgroud)