Рекурсия и переход по ссылке

У меня есть дерево категорий следующей структуры:

[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;
}
7
задан sevenWonders 1 December 2010 в 15:14
поделиться