gpt4 book ai didi

php - 如何使用分层数据结构打印列表?

转载 作者:行者123 更新时间:2023-12-01 20:05:10 24 4
gpt4 key购买 nike

当我运行此代码时:

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

但我想创建一个包含 <ul><li>... 的列表:

我尝试过:

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 标签等等。我为此浪费了 2 天的时间,所以如果您能帮助我,请在此处发帖...

最佳答案

尝试这个算法:

$tree = array(
array('Food', 0),
array('Fruit', 1),
array('Red', 2),
array('Cherry', 3),
array('Strawberry', 3),
array('Cool', 4),
array('Not cool', 4),
array('Yellow', 2),
array('Banana', 3),
array('Meat', 0),
array('Beef', 1),
array('Pork', 1),
);

$depth = -1;
$flag = false;
foreach ($tree as $row) {
while ($row[1] > $depth) {
echo "<ul>\n", "<li>";
$flag = false;
$depth++;
}
while ($row[1] < $depth) {
echo "</li>\n", "</ul>\n";
$depth--;
}
if ($flag) {
echo "</li>\n", "<li>";
$flag = false;
}
echo $row[0];
$flag = true;
}
while ($depth-- > -1) {
echo "</li>\n", "</ul>\n";
}

这里只需要将 $tree 替换为 $table->fetchTree(),将 $row[0] 替换为 $row->name$row[1] by $row->tree_depth

关于php - 如何使用分层数据结构打印列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/901576/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com