2013-08-24 91 views
0

我有一個數組看起來像這樣:PHP遞歸經過陣列

$arr = array(
    array(
     'name' => 'n1', 
     'id' => 0, 
     'children' => array(
       array(
        'name' => 'n2', 
        'id' => 1, 
        'children' => array(
         array(
          'name' => 'n3', 
          'id' => 2, 
          'children' => array(), 
         ), 
         array(
          'name' => 'n4', 
          'id' => 3, 
          'children' => array(), 
         ), 
        ), 
       ), 
       array(
        'name' => 'n17', 
        'id' => 4, 
        'children' => array(), 
       ), 
      ), 
     ), 
    ); 

但在一個更大的規模。

我想寫接收搜索元素的ID作爲參數,並返回所經歷的名字到那裏,例如,用於ID == 4一個php遞歸函數,結果應該是:

array('n1','n17');

+0

你可能想添加一個實際的問題供人回答。您可能還想添加迄今爲止嘗試過的所有內容。 – scones

回答

0
function test($arr, $v, &$x){ 
    if($x==null)$x=array(); 
    foreach ($arr as $sub){ 
     if($sub['id']==$v){ 
      array_push($x,$sub['name']); 
      return true; 
     } 
     if (test($sub['children'],$v,$x)){ 
      array_unshift($x,$sub['name']); 
      return true; 
     } 
    } 
} 
test($myArr,4,$result); 
print_r($result); 
+0

就像一個魅力! – ahlexander

+0

謝謝亞歷山大:) –