をフィルタリング:array_filter()私は、この多次元アレイ有しルートノードを
:私はこれを取得$foobar = array_filter($navbar, function($value) {
return $value['slug'] == 'accesorios' || $value['slug'] == 'ropa';
});
:私はこれを使用して、配列の最初のレベルのノードをフィルタリングすることができ
[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 ()
)
を
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
しかし、私は、例えば、これを使用して第2または第3のレベルのノードをフィルタリングしよう:
$foobar = array_filter($navbar, function($value) {
return $value['slug'] == 'zapatillas';
});
空の結果が得られました。どのようにして、その配列を2番目または3番目にフィルタリングできますか?
'array_filter'は再帰的ではありません。再帰的フィルタリングが必要な場合は、それを自分で実装する必要があります。 – deceze
期待される結果はどういうものでしょうか?あなたはあなたの状態に合った子供を持つすべてのノードを保持したいと思います...? – deceze