J'ai un arbre de catégories de la structure suivante:Recursion et passage par référence
[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
(
)
)
)
)
A côté d'une sous-catégorie, chaque catégorie peut contenir des produits (comme un dossier peut contenir des sous-dossiers et fichiers seulement). J'essaye d'écrire une fonction récursive dont je veux prendre cette rangée comme référence et dépouiller les deux catégories de feuilles avec [productCount] = 0 et toutes les catégories parent qui contiennent de tels nœuds vides. En d'autres termes, après traitement, je veux avoir seulement les catégories qui contiennent des produits sur n'importe quel sous-niveau.
J'ai écrit du code, maintenant le débogage et il ne dépouille pas les nœuds vides. Peut-être que je n'utilise pas correctement les références. S'il vous plaît, aidez-moi à le réparer, si possible.
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;
}
Est-ce que 'array() == false'? – jantimon
@Ghommey: Oui, en PHP un tableau vide est considéré comme falsifié. – BoltClock