У меня есть дерево категорий следующей структуры:
[6] => Array
(
[id] => 6
[name] => computers
[productCount] => 0
[children] => Array
(
[91] => Array
(
[id] => 91
[name] => notebook
[productCount] => 5
[children] => Array
(
)
)
[86] => Array
(
[id] => 86
[name] => desktop
[productCount] => 0
[children] => Array
(
)
)
)
)
Помимо подкатегории, каждая категория может содержать продукты (например, папка может содержать вложенные папки и просто файлы).
I ' m пытаюсь написать рекурсивную функцию, которую я хочу взять этот массив в качестве ссылки и удалить обе конечные категории с [productCount] = 0 и все родительские категории, которые содержат такие пустые узлы. Другими словами, после обработки я хочу иметь только те категории, которые содержат продукты на любых подуровнях.
Я написал некоторый код, теперь отлаживаю его, и он не удаляет пустые узлы. Может быть, я неправильно использую ссылки. Пожалуйста, помогите мне исправить это, если возможно.
function pruneTree( & $node) {
if ( ! $node['children'] && ! $node['productCount']) {
unset($node);
}
if ( ! empty($node['children'])) {
foreach ($node['children'] as $key => $child) {
pruneTree($node['children'][$key]);
}
}
return;
}