рекурсия+массивы

yintar

Новичок
Всем привет!!!.Я уже не раз обращаюсь с этим вопросом помогите,пожалуйста, разобраться окончательно что не так.
Есть такой массив (он может быть неограниченной вложенности):
Код:
$b = array(
    '0' => array(
        'text' => 'фрукты',
        'count' => '2',
        'line' => '1',
        'children' => array(
            '0' => array(
                'text' => 'банан',
                'count' => '10',
                'line' => '2',
                'children' => '',
            ),
            '1' => array(
                'text' => 'груша',
                'count' => '5',
                'line' => '3',
                'children' => array(
                    '0' => array(
                        'text' => 'дыня',
                        'count' => '1',
                        'line' => '5',
                        'children' => array(
                            '0' => array(
                                'text' => 'арбуз',
                                'count' => '1',
                                'line' => '5',
                                'children' => '',
                            )
                        )
                    )
                )
            )
        )
    )
);
А мне нужен такой:
Код:
Array
(
    [0] => Array
        (
            [text] => банан
            [count] => 10
            [line] => 2
            [children] =>
        )

    [1] => Array
        (
            [text] => дыня
            [count] => 1
            [line] => 5
            [children] =>
        )

    [2] => Array
        (
            [text] => груша
            [count] => 5
            [line] => 3
            [children] =>
        )
   
     [3] => Array
        (
            [text] => арбуз
            [count] => 5
            [line] => 3
            [children] =>
        )
    [4] => Array
        (
            [text] => фрукты
            [count] => 2
            [line] => 1
            [children] =>
        )

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

Дела. так:
Код:
function test($b) {
    $a = array();
    foreach ($b as $item) {
        if ($item['children'] != '') {
            $a += test($item['children']);
        }

        $item['children'] = '';
        $a[] = $item;
    }

    return $a;
}
но в массиве не хватает элемента

(
[text] => арбуз
[count] => 5
[line] => 3
[children] =>
)
Что я делаю не так???????????
 

yintar

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

С.

Продвинутый новичок
Я не знаю, чем ты там занимался и что выводил. Если не видишь, значит плохо отлаживаешь. Я тоже не вижу, я ведь не виртуальная машина. Чтобы увидеть, мне бы пришлось отлаживать вместо тебя.

Элемнтарно отладочной выдачей получить весь порадок обхода элементов. Обратить внимание, что твой абуз -- самое глубокое вложение, смотерть как твой алгоритм обрабатыварт конечные элементы.
 

Redjik

Джедай-мастер
Самый прикол в том, что:
1) Массив изначально откуда то взялся.
2) Судя по именованию элементов, пришел adjacency list из базы.
3) Потом его конвертнули во вложенные массив.

и теперь ТС хочет конвертнуть его обратно... мдя
 
Сверху