私は配列の配列を持っています、
以下に基本的な構造を投稿しました。再帰はどのような深さでもかまいません。
とにかく、私がやりたいのは、配列内のすべてのアイテムをループし、その['item']->data('id')
値が等しい場合は$id
、ツリーのそのセクションを削除することです。
しかし、これを行う最も効率的な方法がわかりませんか?
これでうまくいくと思いますが、何か足りないのでしょうか?
function removeKey($key, &$categories){
foreach($categories as $k => $category){
if($category['item']->data('id') == $key){
unset($categories[$k]);
return;
}
if(!empty($category['children']))
removeKey($key, $category['children']);
}
}
removeKey($id, $categories);
array(
array(
'item' => "category Object", //use ->data('id') to get the id!
'children' => array(
array(
'item' => "category Object",
'children' => array(
array(
'item' => "category Object",
'children' => array()
)
)
),
array(
'item' => "category Object",
'children' => array(
array(
'item' => "category Object",
'children' => array()
)
)
)
)
),
array(
'item' => "category Object",
'children' => array(
array(
'item' => "category Object",
'children' => array(
array(
'item' => "category Object",
'children' => array()
)
)
),
array(
'item' => "category Object",
'children' => array(
array(
'item' => "category Object",
'children' => array()
)
)
)
)
)
);