PHP-用另一个数组替换一个数组的li



我正在尝试使用ulli创建一个树结构。无论数据库中是否有值,我都需要始终显示树结构。所以我创建了一个函数,并制作了一个树状结构。现在,当数据库中有这些节点的值时,我想替换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>";
}

最新更新