メニュー項目を含む配列が1つあります。各項目にはparent_idがあります。私は何時間も探していますが、再帰的に配列をどのようにトラバースするかを理解することはできません。私は再帰をうまく行っていない。メニュー配列を再帰的に作成
私は以下の投稿からコードを使用しようとしました。それはhtmlメニューを生成しますが、私は配列のカスタムHTMLメニューを作ることができるように配列も欲しいので、最初のレコードを見落とします。
Using recursion to build navigation
私は他のポストからこのコードを試みたが、それは空の配列を返します。
create_array(-1, $array);
function create_array($number, $data)
{
$result = array();
foreach ($data as $row)
{
if ($row['parent_id'] == $number)
{
$result[$row['id']] = create_array($row['id'], $data);
}
}
return $result;
}
データ配列:希望
Array
(
[0] => Array
(
[id] => 1
[parent_id] => -1
[url] => /home
)
[1] => Array
(
[id] => 2
[parent_id] => 0
[url] => /page
)
[2] => Array
(
[id] => 3
[parent_id] => 2
[url] => /page/sub_page
)
[3] => Array
(
[id] => 4
[parent_id] => 3
[url] => /page/sub_page/inner_page/
)
)
結果:
home - page
sub_page
inner_page
すべてのヘルプは非常にしてください理解されるであろう。
@larsAnders実際、データは自己参照親IDを持つ単一のテーブルからです。 idが0の子要素は子要素ではなく、-1はホームページです。他の子は親IDとしてのidと対になります。 – Bsienn
$ numberは正確に何ですか? – Adam
@ null05ホームページの開始親エントリは-1です。その機能はうまく機能しませんでした。 – Bsienn