2011-05-31 127 views
0

我在更新深度嵌套多維php關聯數組時遇到問題。 我基本上想要它添加和'parent_id'鍵與遞增值的所有數組元素下有一個數組。例如我有下面的數組。在PHP多維關聯數組中添加數組鍵

[root] => 
    Array('child_1' => 
      Array('child1_grandchild_1' => 'gchild1_value', 
        'child1_grandchild_2' => Array('grandchild_1' => 'gchildval1', 
                'grandchild_2 => 'gchildval2', 
                'grandchild_3' => 'gchildval3'), 
        'child1_grandchild_3' => 'gchild3_value'), 
    'child_2', => Array('child2_grandchild_1' => 'gchildval1',    
         'child2_grandchild_2' => 'gchildval2'), 
    'child_3' => 'child3_val', 
    'child_4' => 'child4_val' 
    ); 

我想爲具有數組值的元素添加父鍵id元素。 基本上,上面的數組將轉換爲下面的數組。但我不知道如何做到這一點,因爲我不知道陣列的嵌套程度如何。 我嘗試通過引用傳遞數組通過更新它不起作用。

[root] => 
    Array('parent_id' => 1 
      'child_1' => 
      Array('child1_grandchild_1' => 'gchild1_value', 
        'child1_grandchild_2' => Array('parent_id' => 2, 
                'grandchild_1' => 'gchildval1', 
                'grandchild_2 => 'gchildval2', 
                'grandchild_3' => 'gchildval3'), 
        'child1_grandchild_3' => 'gchild3_value'), 
    'child_2', => Array('parent_id' => 3, 
         'child2_grandchild_1' => 'gchildval1',    
         'child2_grandchild_2' => 'gchildval2'), 
    'child_3' => 'child3_val', 
    'child_4' => 'child4_val' 
    ); 

回答

0

這樣的事情? 您的項目鑰匙將從1000開始。如果您有更多項目,那麼每個分支中有1000個,然後添加一個零使其成爲10000或任何安全的項目。

$no = 1000; 
$no2 = 1; 

function addpid(&$item, $key) 
{ 
     global $no; 
     global $no2; 
     if(is_array($item)){ 
      $item['parent_id'] = $no; 
      $no++; 
     }else{ 
      $no2++; 
      $no=$no2*1000; 
     } 
} 

$yourarray 

array_walk_recursive($yourarray, 'addpid'); 
+0

我試過這個,但$ item無法識別。它只能看到$ key值。我的數組是來自json文件的多維關聯。 – 2011-05-31 06:47:38