Array_walk_recursive - Как сохранить дерево?

array_walk_recursive - рекурсивно перебирает массив вне зависимости от уровня вложенности.

Как при этом на выходе сохранить тоже дерево? Уровни вложенности подмассивов.


Ответы (1 шт):

Автор решения: Алексей Шиманский

Можно передать элемент по ссылке (внимание на знак аперсанда в аргументе функции!):

$sweet = array('a' => 'apple', 'b' => 'banana');
$fruits = array('sweet' => $sweet, 'sour' => 'lemon');

function test_print(&$item, $key)
{
    $item .= 666;
}

array_walk_recursive($fruits, 'test_print');
print_r($fruits);
// Выведет:

Array
(
    [sweet] => Array
        (
            [a] => apple666
            [b] => banana666
        )

    [sour] => lemon666
)

Если надо сохранить и предыдущий массив, то просто перед функцией надо скопировать массив в вдругую переменную и работать уже с ней

→ Ссылка