我正在尝试使用ul
和li
创建一个树结构。无论数据库中是否有值,我都需要始终显示树结构。所以我创建了一个函数,并制作了一个树状结构。现在,当数据库中有这些节点的值时,我想替换li
数据。这是我的数组生成的代码。
<li><a href="#">1</a>
<ul><li><a href="#">2</a>
<ul><li><a href="#">2.1</a>
<ul>
<li><a href="#">2.1.1</a>
</li>
<li><a href="#">2.1.2</a>
</li>
</ul>
</li>
<li>
<a href="#">2.2</a>
<ul>
<li><a href="#">2.2.1</a>
</li>
<li><a href="#">2.2.2</a>
</li>
</ul>
</li></ul>
</li>
</ul>
</li>
这是基本结构,当我们在另一个数组中有值时,我想替换像2.1, 2.1.1,2.2.2
这样的节点,该数组给出像这样的输出
<li>
<a>
<div class="card">
<div class="thumb">grey</div>
<div class="id">157</div>
<div class="username">okamikid1</div>
</div>
</a>
<ul>
<li><a><div class="card">
<div class="thumb">red</div>
<div class="id">158</div>
<div class="username">okamikid1</div>
</div>
</a>
<ul></ul></li></ul>
</li>
基本上我有两个数组,两个数组都有li
。我想用第二个数组替换第一个数组的li
,并保留第二个阵列中不存在的其他值。
这里是json形式的第一个数组的数组结构,这样您可以更清楚地看到结构。
{"157":{"id":"157","username":"okamikid1","parent_id":null,"children":[{"id":"158","parent_id":"157","username":"okamikid1","children":[]},{"id":"160","parent_id":"157","username":"okamikid2","children":[]}]}}
根据您的评论,我认为您希望显示一个包含数据库数据的树结构。此外,您希望node
存在于树结构中,即使数据库中不存在该值。
我建议采取以下变通方法。
假设你有两个像这样的阵列
$placeholders = [
1 => [
'1.1' => '1.1',
'1.2' => '1.2',
'1.3' => '1.3',
],
2 => [
'2.1' => '2.1',
'2.2' => '2.2',
'2.3' => '2.3',
],
3 => [
'3.1' => '3.1',
'3.2' => '3.2',
'3.3' => '3.3',
]
];
$placeholders
数组定义了树结构。
现在,您可以使用以下格式从数据库中获取数据。
$data = [
1 => [
'1.1' => 'Node 1.1',
'1.2' => 'Node 1.2',
'1.3' => 'Node 1.3',
],
2 => [
'2.1' => 'Node 2.1',
'2.2' => 'Node 2.2',
'2.3' => 'Node 2.3',
]
];
现在,使用array_replace_recurive函数将占位符替换为数据库中的实际值。
$data = array_replace_recursive($placeholders, $data);
然后打印树状结构,如:
foreach ($data as $base => $nodes)
{
echo "<ul>";
echo "<li>{$base}</li>";
echo "<ul>";
foreach ($nodes as $node) {
echo "<li>{$node}</li>";
}
echo "</ul>";
echo "</ul>";
}