如何使用分层数据结构打印列表?
当我运行此代码时:
foreach ($tree as $node) {
echo str_repeat(' ', $node->tree_depth * 4) . $node->id . PHP_EOL;
}
我得到格式良好的文本,例如:
Food
Fruit
Red
Cherry
Strawberry
Cool
Not cool
Yellow
Banana
Meat
Beef
Pork
但我想用
...
创建一个列表:
我尝试过:
echo '<ul>';
$prev_depth = 0;
foreach($table->fetchTree() as $row) {
if ($row->tree_depth > $prev_depth) {
echo '<li><ul>';
} else if ($row->tree_depth < $prev_depth) {
echo '</li></ul>';
}
echo '<li>' . $row->name . '</li>';
$prev_depth = $row->tree_depth;
}
echo '</ul>';
但我有一些额外的 ul标签等。 我在这件事上浪费了两天时间,所以如果你能帮助我,请在这里发帖......
When I run this code:
foreach ($tree as $node) {
echo str_repeat(' ', $node->tree_depth * 4) . $node->id . PHP_EOL;
}
I get well formatted text like:
Food
Fruit
Red
Cherry
Strawberry
Cool
Not cool
Yellow
Banana
Meat
Beef
Pork
But I want to create a list with <ul><li>...
:
I tried with:
echo '<ul>';
$prev_depth = 0;
foreach($table->fetchTree() as $row) {
if ($row->tree_depth > $prev_depth) {
echo '<li><ul>';
} else if ($row->tree_depth < $prev_depth) {
echo '</li></ul>';
}
echo '<li>' . $row->name . '</li>';
$prev_depth = $row->tree_depth;
}
echo '</ul>';
But I have some extra ul tags and so on. I lost 2 days on this so if you can help me please post here...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
尝试这个算法:
这里你只需要将
$tree
替换为$table->fetchTree()
,将$row[0]
替换为 < code>$row->name 和$row[1]
by$row->tree_depth
。Try this algorithm:
Here you just need to replace
$tree
by$table->fetchTree()
,$row[0]
by$row->name
and$row[1]
by$row->tree_depth
.请尝试使用此代码:
我已将其更新为输出更少的
标签,从而减少了项目符号的数量。 但另一方面,这将生成无法验证的 HTML,因为超过一级的跳转将导致生成
。
Try this code instead:
I've updated it to output fewer
<li>
tags, thereby reducing the number of bullets. But on the other hand, this will generate HTML that wont validate since a jump of more than one level will result in a<ul><ul>
being generated.