Ho un albero di categorie della seguente struttura:ricorsione e il passaggio per riferimento
[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
(
)
)
)
)
Accanto a una sottocategoria, ogni categoria può contenere prodotti (come una cartella può contenere sottocartelle e solo i file).
Sto provando a scrivere una funzione ricorsiva che voglio prendere questo array come riferimento e rimuovere entrambe le categorie foglia con [productCount] = 0 e tutte le categorie padre che contengono tali nodi vuoti. In altre parole, dopo l'elaborazione voglio avere solo quelle categorie che contengono prodotti su qualsiasi sottolivello.
Ho scritto del codice, ora il debug e non elimina i nodi vuoti. Forse non sto usando i riferimenti correttamente. Per favore, aiutami a risolverlo, se possibile.
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;
}
È 'array() == false'? – jantimon
@Ghommey: Sì, in PHP una matrice vuota è considerata falsa. – BoltClock