php - 将 PHP 多维数组打印为 HTML 列表
问题描述
我有以下 PHP 数组:
stdClass::__set_state(array(
'channels' =>
stdClass::__set_state(array(
'INFORMATIONEN' =>
array (
0 => 'welcome',
1 => 'rules',
2 => 'contact',
),
'NEWS' =>
array (
0 => '✉news',
1 => 'videos',
),
'TEAM' =>
array (
0 => '♠team-lounge',
1 => 'coding',
2 => 'bottest',
3 => 'Besprechung',
4 => '♠Team Lounge'
),
'LIVE' =>
array (
0 => 'Live Stream 1',
1 => 'Live Stream 2',
),
'RECORD' =>
array (
0 => 'Aufnahme 1',
1 => 'Aufnahme 2',
),
'TK' =>
array (
0 => 'Diff',
),
'USER' =>
array (
0 => 'lounge-1',
1 => 'lounge-2',
2 => 'lounge-3',
3 => 'Lounge 1',
4 => 'Lounge 2',
5 => 'Lounge 3',
),
'Support' =>
array (
0 => 'supportticket',
),
'AFK' =>
array (
0 => 'AFK',
),
)),
))
这是以下命令的输出:
echo '<pre>' . var_export($decodedChannels, true) . '</pre>';
那是我想在网站上显示的不和谐服务器的频道列表。
它应该显示的基本上是一个嵌套的无序列表,例如:
<ul>
<li>INFORMATIONEN</li>
<li>
<ul>
<li>Welcome</li>
<li>rules</li>
<li>contact</li>
</ul>
</li>
<li>NEWS</li>
<li>
<ul>
<li>News</li>
<li>Videos</li>
</ul>
</li>
</ul>
当然,对于其他数组部分,依此类推。基本上它应该看起来像不和谐......
我进行了很多搜索,发现了各种带有foreach
循环、不同想法和所有内容的解决方案,但没有任何效果......要么我只得到了数组的第一层,要么只有键或其他问题......
谁能指出我解决问题的正确想法?
解决方案
您可以使用递归来嵌套它。您对标题列表有一些不寻常的要求,但这应该可以按您的预期工作。
$data = array(
'INFORMATIONEN' =>
array(
0 => 'welcome',
1 => 'rules',
2 => 'contact',
),
'NEWS' =>
array(
0 => '✉news',
1 => 'videos',
),
'TEAM' =>
array(
0 => '♠team-lounge',
1 => 'coding',
2 => 'bottest',
3 => 'Besprechung',
4 => '♠Team Lounge'
),
'LIVE' =>
array(
0 => 'Live Stream 1',
1 => 'Live Stream 2',
),
'RECORD' =>
array(
0 => 'Aufnahme 1',
1 => 'Aufnahme 2',
),
'TK' =>
array(
0 => 'Diff',
),
'USER' =>
array(
0 => 'lounge-1',
1 => 'lounge-2',
2 => 'lounge-3',
3 => 'Lounge 1',
4 => 'Lounge 2',
5 => 'Lounge 3',
),
'Support' =>
array(
0 => 'supportticket',
),
'AFK' =>
array(
0 => 'AFK',
),
);
function listArray($array) {
echo "<ul>\n";
foreach($array as $key => $value) {
echo "<li>";
if(is_array($value)) {
listArray($value);
} else {
echo $value;
}
echo "</li>\n";
}
echo "</ul>\n";
}
foreach($data as $key => $array) {
echo "<ul>\n";
echo "<li>$key</li>\n";
echo "<li>";
listArray($array);
echo "</li>\n";
echo "</ul>\n";
}
这给出了这个 HTML 输出
<ul>
<li>INFORMATIONEN</li>
<li>
<ul>
<li>welcome</li>
<li>rules</li>
<li>contact</li>
</ul>
</li>
</ul>
<ul>
<li>NEWS</li>
<li>
<ul>
<li>✉news</li>
<li>videos</li>
</ul>
</li>
</ul>
<ul>
<li>TEAM</li>
<li>
<ul>
<li>♠team-lounge</li>
<li>coding</li>
<li>bottest</li>
<li>Besprechung</li>
<li>♠Team Lounge</li>
</ul>
</li>
</ul>
<ul>
<li>LIVE</li>
<li>
<ul>
<li>Live Stream 1</li>
<li>Live Stream 2</li>
</ul>
</li>
</ul>
<ul>
<li>RECORD</li>
<li>
<ul>
<li>Aufnahme 1</li>
<li>Aufnahme 2</li>
</ul>
</li>
</ul>
<ul>
<li>TK</li>
<li>
<ul>
<li>Diff</li>
</ul>
</li>
</ul>
<ul>
<li>USER</li>
<li>
<ul>
<li>lounge-1</li>
<li>lounge-2</li>
<li>lounge-3</li>
<li>Lounge 1</li>
<li>Lounge 2</li>
<li>Lounge 3</li>
</ul>
</li>
</ul>
<ul>
<li>Support</li>
<li>
<ul>
<li>supportticket</li>
</ul>
</li>
</ul>
<ul>
<li>AFK</li>
<li>
<ul>
<li>AFK</li>
</ul>
</li>
</ul>
推荐阅读
- html - 图像没有拉伸为前景中的背景
- time-series - 是否有“反向”时间序列模型?
- go - 列出按条件过滤的 Firestore 集合 ID
- loops - 如何在 less.js 中为 DRY 编写循环函数或混合变量
- javascript - 链接到不存在的文件后,Chrome 未重新加载对象标记
- c# - 第二次单击检查列时,CellMouseClick 不起作用
- excel - XMLHTTP 指示 URL
- javascript - 如何在 Angular 中渲染开槽的 ng-template
- python - 如何从烧瓶中的 HTML 选项值获取数据
- java - Java 中的静态方法调用是如何工作的?