Добавление ключа массива в многомерный ассоциативный массив PHP - PullRequest
0 голосов
/ 31 мая 2011

У меня проблемы с обновлением глубоко вложенного многомерного ассоциативного массива 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'
    ); 

Я хочу добавить родительский элемент идентификатора ключа для элементов со значениями массива.В основном, массив выше преобразуется в массив ниже.Но я не знаю, как это сделать, учитывая, что я не знаю, насколько глубоко вложен массив.Я попытался передать массив по ссылке, обновив его не работает.

   [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 голосов
/ 31 мая 2011

как то так? Ключи ваших предметов начнутся с 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');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...