I dieses mehrdimensionales Array habe:array_filter() filtert nur den Wurzelknoten
[0] => Array (
[id] => 1
[name] => Ropa
[slug] => ropa
[lft] => 1
[lvl] => 0
[rgt] => 2
[__children] => Array ()
)
[1] => Array (
[id] => 3
[name] => Calzado
[slug] => calzado
[lft] => 1
[lvl] => 0
[rgt] => 8
[__children] => Array (
[0] => Array (
[id] => 10
[name] => Zapatos y botas
[slug] => zapatos-y-botas
[lft] => 2
[lvl] => 1
[rgt] => 3
[__children] => Array ()
)
[1] => Array (
[id] => 11
[name] => Zapatillas
[slug] => zapatillas
[lft] => 4
[lvl] => 1
[rgt] => 7
[__children] => Array (
[0] => Array (
[id] => 14
[name] => Zapatillas rojas
[slug] => zapatillas-rojas
[lft] => 5
[lvl] => 2
[rgt] => 6
[__children] => Array ()
)
)
)
)
)
[2] => Array (
[id] => 13
[name] => Accesorios
[slug] => accesorios
[lft] => 1
[lvl] => 0
[rgt] => 2
[__children] => Array ()
)
I die erste Ebene Knoten des Arrays filtern kann dies unter Verwendung von:
$foobar = array_filter($navbar, function($value) {
return $value['slug'] == 'accesorios' || $value['slug'] == 'ropa';
});
so erhalte ich diese:
array (size=2)
0 =>
array (size=7)
'id' => int 1
'name' => string 'Ropa' (length=4)
'slug' => string 'ropa' (length=4)
'lft' => int 1
'lvl' => int 0
'rgt' => int 2
'__children' =>
array (size=0)
empty
2 =>
array (size=7)
'id' => int 13
'name' => string 'Accesorios' (length=10)
'slug' => string 'accesorios' (length=10)
'lft' => int 1
'lvl' => int 0
'rgt' => int 2
'__children' =>
array (size=0)
empty
Aber wenn ich versuche, die zweite oder dritte Ebene Knoten mit diesem Beispiel zu filtern:
$foobar = array_filter($navbar, function($value) {
return $value['slug'] == 'zapatillas';
});
Ich bekomme leere Ergebnisse .. Also, wie kann ich in diesem Array die zweite oder dritte filtern?
'array_filter' nicht rekursiv ist. Wenn Sie eine rekursive Filterung benötigen, müssen Sie sie selbst implementieren. – deceze
Und was genau ist das erwartete Ergebnis? Du willst alle Knoten behalten, die Kinder haben, die deinem Zustand entsprechen, nehme ich an ...? – deceze