Rekursion und der übergabe by reference

Habe ich einen Baum von Kategorien, die der folgenden Struktur:

[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
                            (
                            )
                    )
            )
    )

Neben einer Unterkategorie und mit jeder Kategorie können die Produkte enthalten (wie ein Ordner kann Unterordner enthalten und nur Dateien).

Ich bin versucht zu schreiben Sie eine rekursive Funktion, die ich will nehmen Sie dieses array als Referenz und Streifen sowohl die Blatt-Kategorien mit [productCount] = 0 und alle übergeordneten Kategorien, die enthalten, wie leere Knoten. In anderen Worten, nach der Verarbeitung möchte ich nur die Kategorien, die halten Produkte auf alle Unterebenen.

Habe ich schrieb einige code, jetzt Debuggen und es nicht strip leeren Knoten. Kann sein, ich bin nicht mit Referenzen richtig. Bitte helfen Sie mir, es zu beheben, wenn möglich.

    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;
}
  • Ist array() == false ?
  • Ja, in PHP ein leeres array wird als falsy.
InformationsquelleAutor sevenWonders | 2010-12-01
Schreibe einen Kommentar