2011-05-31 131 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