在PHP多维关联数组中添加数组键

时间:2011-05-31 01:04:20

标签: php arrays associative

我在更新深度嵌套的多维php关联数组时遇到问题。 我基本上希望它添加和'parent_id'键以及递增值给所有在其下面有数组的数组元素。

例如,我有下面的数组。

   [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'
    ); 

1 个答案:

答案 0 :(得分: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');