2012-12-22 68 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