2012-12-22 69 views
2

我发现了下面的代码,它打印出数组fine的所有元素。我怎么修改它来打印一个键一次,然后所有的值对应的键,然后另一个键,然后所有的值对应的键?我也想修改它,因此它只打印每个键的前9个值(不超过此值)。PHP递归用键输出多维数组的所有元素

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

    foreach($a as $v) { 
    printAll($v); 
    } 
} 
+0

的foreach($ a作为$ K => $ v)的{ printAll($ K); }? – vodich

+0

7个问题,11个回答,没有被接受? –

+0

@史蒂芬法利这不让我接受另外2分钟。 – user1605871

回答

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

    foreach($a as $k => $value) { 
     if($k<10){ 
      printAll($k); 
      printAll($value); 
     } 
    } 
} 
+0

只打印键值。不是价值。那么现在打印这些值呢? – user1605871

0

尝试用:

foreach($a as $k => $v) 

其中$k是你的钥匙和$v仍值。

1

print_rvar_dumpvar_export有什么不对?

除此之外,请阅读关于foreach的文档,您将清楚地了解如何获得您正在迭代的密钥。

2
function printAll($a) { 
    foreach ($a as $k => $v) { 
    echo $k, ' '; 
    } 

    printAllVals($a); 
} 

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

    foreach($a as $k => $v) { 
    if ($k < 10) { 
     printAllVals($v); 
    } 
    } 
} 
+0

每个键的限制少于9个值怎么办? – user1605871

+0

这有效。除了一个小问题。我希望能够打印关键字,然后打印关键字中的前9个值。然后打印下一个键,然后打印键中的前9个值。现在,代码打印所有键,然后打印所有值。我将如何改变这一点? – user1605871

+0

你的问题说:“一次打印数组的键,然后打印所有值”。 –

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 
} 

用法:

$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); 

输出:

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