从拉平数据PHP画“UL礼”树最简单的方法
问题描述:
有在数据库中的个人和位置存储,像这样:从拉平数据PHP画“UL礼”树最简单的方法
$rows = array(
array(
'name' => "John Smith",
'level'=> 1,
'order'=> 1
),
array(
'name' => "Matt Simons",
'level'=> 2,
'order'=> 1
),
array(
'name' => "Someone Else",
'level'=> 2,
'order'=> 2
),
);
这应该引起:
<ul>
<li>John Smith</li>
<ul>
<li>Matt Simons</li>
<li>Someone Else</li>
</ul>
</ul>
什么是在PHP中执行此操作的最简单方法?
答
一个不错的方法是使用DOMDocument动态创建HTML元素。
这是一个适用于您的特定情况的快速示例。但是您必须添加其他检查以使其健壮。
$rows = array(
array(
'name' => "John Smith",
'level'=> 1,
'order'=> 1
),
array(
'name' => "Matt Simons",
'level'=> 2,
'order'=> 1
),
array(
'name' => "Someone Else",
'level'=> 2,
'order'=> 2
),
);
$dom = new DOMDocument();
$ul = $dom->createElement('ul');
$dom->appendChild($ul);
$lastLevel = 1;
$lastLi = null;
foreach ($rows as $row) {
$li = $dom->createElement('li', $row['name']);
if ($lastLevel != $row['level']) {
$lastLevel = $row['level'];
$ul = $dom->createElement('ul');
$lastLi->appendChild($ul);
}
$ul->appendChild($li);
$lastLi = $li;
}
echo $dom->saveHTML();
最简单的方法是为它编写一些代码 – 2014-08-30 14:01:47
你的位置没有意义。你只能在1级上有1个值。 – 2014-08-30 14:03:28
@newboyhun我在1级上看不到超过1个值 – 2014-08-30 14:05:10