2013-09-22 45 views
0

在多維數組中,我試圖用特定的鍵來選擇所有的後代數組,無論他們的父數組是什麼。我知道下面的語法不工作,但希望這將有助於說明什麼,我試圖完成:PHP - 將操作應用到後代數組,無論父數組是什麼

<?php 
    foreach ($array[*][*]['descendant'] as $descendent) { 
    // do stuff 
    } 
?> 

同樣,我要弄清楚兄弟陣列是否不包含此數組的鍵。事情是這樣的(再次,我知道語法是可怕的錯誤):

<?php 
    foreach ($array[*][*]['descendant'] < 1 as $descendent) { 
    // do stuff 
    } 
?> 
+0

你看着[array_walk_recursive(http://php.net/manual/en/function.array-walk-recursive.php)? –

+0

它只是三維數組還是您有未定義的維度(可以是任意數量的維度)? – invisal

回答

2

如果總有3維數組,你可以使用嵌套的循環:

foreach($array as $lv1) { 
    foreach($lv1 as $lv2) { 
     foreach($lv2['descendant'] as $descendent) { 
       // do stuff 
     } 
    } 
} 

如果你想支持無限維數,你可以使用這個醜陋的代碼

function drill($arr) { 
    if (isset($arr) && is_array($arr)) { 
     foreach($arr as $key => $value) { 
      if ($key == 'descendant') { 
       foreach($value as $descendent) { 
        // do stuff here 
       } 
      } else { 
       drill($value); 
      } 
     } 
    } 
} 
drill($array);