PHP从3d数组生成HTML列表?
我正在尝试从3d数组创建html列表:PHP从3d数组生成HTML列表?,php,foreach,html-lists,Php,Foreach,Html Lists,我正在尝试从3d数组创建html列表: <?php $items = [ 0 => [ 'id' => 100, 'parent_id' => 0, 'url' => 'Home', 'children' => [] ], 1 => [ 'id' => 101, 'parent_id' => 0, 'url
<?php
$items = [
0 => [
'id' => 100,
'parent_id' => 0,
'url' => 'Home',
'children' => []
],
1 => [
'id' => 101,
'parent_id' => 0,
'url' => 'About',
'children' => [
0 => [
'id' => 102,
'parent_id' => 101,
'url' => 'About 1'
],
1 => [
'id' => 102,
'parent_id' => 101,
'url' => 'About 2'
],
2 => [
'id' => 102,
'parent_id' => 101,
'url' => 'About 3'
],
]
],
];
?>
<?php if (count($items) > 0) { ?>
<ul>
<?php foreach ($items as $item) { ?>
<li><?php echo $item['url'];?>
<?php if(count($item['children']) > 0) { ?>
<ul class="nested">
<?php foreach ($item['children'] as $subitem) { ?>
<li><?php echo $subitem['url'];?></li>
<?php } ?>
</ul>
<?php } ?>
</li>
<?php } ?>
</ul>
<?php } ?>
-
结果:
<ul>
<li>Home</li>
<li>About
<ul class="nested">
<li>About 1</li>
<li>About 2</li>
<li>About 3</li>
</ul>
</li>
</ul>
- 家
- 关于
- 大约1
- 大约2
- 大约三点
但我所追求的是:
<ul>
<li>Home</li>
<li>About
<ul class="nested">
<li>About 1</li>
</ul>
<ul class="nested">
<li>About 2</li>
</ul>
<ul class="nested">
<li>About 3</li>
</ul>
</li>
</ul>
- 家
- 关于
- 大约1
- 大约2
- 大约三点
有什么想法吗
或者,数组结构应该是怎样的来实现我想要的HTML列表?用这样的东西添加一些递归怎么样?无论尺寸有多深(3D、4D等),它都会照顾到您的列表
函数创建列表($items){
if(count($items)==0)返回null;//如果子项为空
如果(!array_key_存在('children',$items)| count($items['children'])==0){
回显“”.$items['url']”。 ;
返回null;
}
//只是为了确保我们有“url”索引
如果(数组\键\存在('url',$items)){
回显“”.$items['url']”。 ;
}
foreach($items['children']作为$child){
回声“”;
创建_列表($child);
回声“
”;
}
}
回声“”;
foreach($items作为$item){
创建_列表($item);
}
回声“
”;
用这样的东西添加一些递归怎么样?无论尺寸有多深(3D、4D等),它都会照顾到您的列表
函数创建列表($items){
if(count($items)==0)返回null;//如果子项为空
如果(!array_key_存在('children',$items)| count($items['children'])==0){
回显“”.$items['url']”。 ;
返回null;
}
//只是为了确保我们有“url”索引
如果(数组\键\存在('url',$items)){
回显“”.$items['url']”。 ;
}
foreach($items['children']作为$child){
回声“”;
创建_列表($child);
回声“
”;
}
}
回声“”;
foreach($items作为$item){
创建_列表($item);
}
回声“
”;
function create_list($items) {
if (count($items)==0) return null; // if your child item is empty
if (!array_key_exists('children', $items) || count($items['children'])==0) {
echo '<li>'.$items['url'].'</li>';
return null;
}
// just to be sure we have the index 'url'
if (array_key_exists('url', $items)) {
echo '<li>'.$items['url'].'</li>';
}
foreach($items['children'] as $child) {
echo "<ul class='nested'>";
create_list($child);
echo "</ul>";
}
}
echo "<ul>";
foreach($items as $item) {
create_list($item);
}
echo "</ul>";