$menus = [
0 => [
'id' => 'home',
'title' => 'Home',
'url' => '/display/home',
'children' => [],
'parent' => null
],
1 => [
'id' => 'nodes',
'title' => 'Nodes',
'url' => 'nodes/index',
'children' => [
0 => [
'id' => 'addNode',
'title' => 'Add Node',
'url' => '/nodes/add',
'children' => [],
'parent' => "nodes"
],
1 => [
'id' => 'editNode',
'title' => 'Edit Node',
'url' => '/nodes/edit',
'children' => [],
'parent' => 'nodes'
],
2 => [
'id' => 'deleteNode',
'title' => 'Delete Node',
'url' => '/nodes/delete',
'children' => [
0 => [
'id' => 'deleteMultipleNodes',
'title' => 'Delete Multiple Nodes',
'url' => '/nodes/deleteall',
'children' => [
0 => [
'id' => 'deleteMultipleSelectedNodes',
'title' => 'Delete Multiple Selected Nodes',
'url' => '/nodes/deleteallselected',
'children' => [],
'parent' => 'deleteMultipleNodes'
]
],
'parent' => 'deleteNode'
]
],
'parent' => 'nodes'
]
],
'parent' => null
]
];
この配列があるとします。私が欲しいのは、"id"の配列を再帰的に検索し、見つかった場合は新しい子をその要素の子配列にプッシュすることです。PHPは再帰的検索中に配列に値をプッシュします
私はさまざまな方法で試してみましたが、RecursiveArrayIteratorを使用して配列をトラバースしようとしましたが、トラバース中に配列のインデックスに値をプッシュする方法が問題です。ここでの例の場合
は私の試みの一つからのコードです:
private function traverseArray($array)
{
$child = [
'id' => 'deleteMultipleNotSelectedNodes',
'title' => 'Delete Multiple Not Selected Nodes',
'url' => '/nodes/deletenotselected',
'children' => [],
'parent' => 'deleteMultipleNodes'
];
foreach($array as $key=>$value)
{
if(is_array($value))
{
$this->traverseArray($value);
}
if($key == "id" && $value == "deleteMultipleNodes")
{
array_push($array["children"], $child); // This part is confusing me, How to add the child on this index where the id is found.
}
}
}
私の日を救う効率的な方法でそのようなことを行う方法上の任意の助け。
あなたの検索で 'deleteMultipleNodes'を修正した場合は、インデックスを知る必要がありますので、何が混乱しますか? –
この子をどのインデックスにプッシュしますか? –
それは再帰的に掘り下げられ、IDが見つかった場合、そのIDの要素に子をプッシュしたいと考えています。しかし、私はインデックスを持っていません –