que tiene un árbol de categorías de la siguiente estructura:recursividad y que pasa por referencia
[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
(
)
)
)
)
Al lado de una subcategoría, cada categoría puede contener productos (como una carpeta puede contener subcarpetas y archivos sólo).
Estoy tratando de escribir una función recursiva que deseo tomar esta matriz como referencia y quitar ambas categorías de hoja con [productCount] = 0 y todas las categorías principales que contienen tales nodos vacíos. En otras palabras, después del procesamiento, quiero tener solo aquellas categorías que contienen productos en cualquier subnivel.
He escrito un código, ahora lo depura y no elimina los nodos vacíos. Puede ser que no estoy usando las referencias correctamente. Por favor, ayúdame a arreglarlo, si es posible.
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;
}
Is 'array() == false'? – jantimon
@Ghommey: Sí, en PHP una matriz vacía se considera faly. – BoltClock