ich einen Baum von Kategorien der folgenden Struktur:Rekursion und vorbei Referenz
[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 kann jede Kategorie Produkte enthält (wie ein Ordner Unterordner und nur Dateien enthält).
Ich versuche, eine rekursive Funktion zu schreiben, die ich dieses Array als Referenz nehmen und beide Blattkategorien mit [productCount] = 0 und alle übergeordneten Kategorien entfernen möchte, die solche leere Knoten enthalten. Mit anderen Worten, nach der Verarbeitung möchte ich nur die Kategorien haben, die Produkte auf beliebigen Unterebenen enthalten.
Ich habe etwas Code geschrieben, jetzt debuggen es und es leere Knoten nicht entfernt. Vielleicht verwende ich Referenzen nicht richtig. Bitte hilf 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'? – jantimon
@Ghommey: Ja, in PHP wird ein leeres Array als falsch angesehen. – BoltClock