我正在嘗試創建一個 PHP 遞回函式來從多維陣列創建多級選單,但仍然失敗。
我有這樣的資料:
<?php
$json = '{"id":1,"name":"john","member":[{"id":9,"name":"jane","member":[]},{"id":10,"name":"lorem","member":[{"id":12,"name":"ipsum","member":[{"id":99,"name":"dolor","member":[]},{"id":109,"name":"sit","member":[{"id":999,"name":"rose","member":[]}]}]}]}]}';
$raw = json_decode($json, true);
?>
所以現在我有一個多維陣列:
(
[id] => 1
[name] => john
[member] => Array
(
[0] => Array
(
[id] => 9
[name] => jane
[member] => Array
(
)
)
[1] => Array
(
[id] => 10
[name] => lorem
[member] => Array
(
[0] => Array
(
[id] => 12
[name] => ipsum
[member] => Array
(
[0] => Array
(
[id] => 99
[name] => dolor
[member] => Array
(
)
)
[1] => Array
(
[id] => 109
[name] => sit
[member] => Array
(
[0] => Array
(
[id] => 999
[name] => rose
[member] => Array
(
)
)
)
)
)
)
)
)
)
)
我的問題是,如何產生如下最終資料:
<ul>
<li>john
<ul>
<li>jane</li>
<li>lorem
<ul>
<li>ipsum
<ul>
<li>dolor</li>
<li>sit
<ul>
<li>rose</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
使用 PHP 遞回函式?
我一直在研究幾個例子,但不幸的是給定的解決方案和資料樣本/條件完全不同。
uj5u.com熱心網友回復:
<?php
$json = '{"id":1,"name":"john","member":[{"id":9,"name":"jane","member":[]},{"id":10,"name":"lorem","member":[{"id":12,"name":"ipsum","member":[{"id":99,"name":"dolor","member":[]},{"id":109,"name":"sit","member":[{"id":999,"name":"rose","member":[]}]}]}]}]}';
$raw = json_decode($json, true);
//var_dump($raw);
function outputSubmenu($items) {
echo '<ul>';
foreach ($items as $data) {
echo '<li>';
echo $data['name'];
if (count($data['member'])) {
outputSubmenu($data['member']);
}
echo '</li>';
}
echo '</ul>';
}
echo outputSubmenu([$raw]);

請注意,我必須如何將$raw變數放入陣列中,以便第一個foreach有效。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/442119.html
