Самый простой способ - передать $tree
в функцию по ссылке .Попробуйте изменить следующую строку в вашем коде
function adj_tree($tree, $item)
на
function adj_tree(&$tree, $item)
Это потому, что в вашем коде $tree
передается внутри функции adj_tree
как копияоригинал $tree
.Когда вы передаете по ссылке, оригинал передается, и изменения в нем с помощью функции adj_tree
отражаются после вызова.
A секунда (не предпочтительно) альтернатива для вашей функциичтобы вернуть измененное дерево, чтобы ваша функция выглядела следующим образом:
function adj_tree($tree, $item) {
$id = $item['recordId'];
$parent = $item['actionParent'];
$tree[$id] = isset($tree[$id]) ? $item + $tree[$id] : $item;
$tree[$parent]['_children'][] = &$tree[];
return $tree; // this is the line I have added
}
И ваш цикл foreach
будет выглядеть так:
foreach ($result as $item){
$tree = adj_tree($tree, $item);
}