Mam drzewo kategorii następującej strukturze:Recursion i przechodzącej przez odniesienie
[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
(
)
)
)
)
obok podkategorii, każda kategoria może zawierać produkty (jak folder może zawierać podfoldery i pliki tylko).
Próbuję napisać funkcję rekurencyjną, którą chcę wziąć tę tablicę jako odniesienie i rozrysować obie kategorie liści za pomocą [productCount] = 0 i wszystkich kategorii nadrzędnych, które zawierają takie puste węzły. Innymi słowy, po przetworzeniu chcę mieć tylko te kategorie, które przechowują produkty na dowolnych podpoziomach.
Napisałem trochę kodu, teraz debuguję go i nie usuwa on pustych węzłów. Być może nie używam referencji poprawnie. Proszę, pomóż mi to naprawić, jeśli to możliwe.
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;
}
Czy 'tablica() == fałsz'? – jantimon
@Ghommey: Tak, w PHP pusta tablica jest uważana za falsy. – BoltClock