我有桌子的种类

如何创建二级菜单,其中rodzic != 0 (rodzic意为父菜单)
发布于 2015-08-15 13:47:09
假设您在这样的数组中有数据:
$data = [
['id' => 3, 'typ' => 'kategorie', 'rodzic' => 0, 'nazwa' => 'OFERTA'],
['id' => 5, 'typ' => 'kategorie', 'rodzic' => 3, 'nazwa' => 'Kominki na drewno'],
/* more elements here */
];您可以首先处理数组并从中获取两个数组:顶级元素数组和子元素数组:
$top_level = [];
$sub_elem = [];
foreach($data as $row) {
$rd = $row['rodzic'];
if($rd) { // has parent
if(!isset($sub_elem[$rd])) { // first time encounter, initialize array
$sub_elem[$rd] = [];
}
$sub_elem[$rd][] = $row; // append row
}
else {
$top_level[] = $row; // append top level row
}
}然后,您只需像这样迭代数据:
<ul>
<?php foreach($top_level as $row): ?>
<li>
<?php echo $row['nazwa'] ?>
<?php if(isset($sub_elem[$row['id']])): ?>
<ul>
<?php foreach($sub_elem[$row['id']] as $sub_row): ?>
<li><?php echo $sub_row['nazwa'] ?></li>
<?php endforeach ?>
</ul>
<?php endif ?>
</li>
<?php endforeach ?>
</ul>这将只适用于深度1。要对列表进行任意嵌套,您需要创建一个recursive函数,我将把它作为一个练习留给读者。
https://stackoverflow.com/questions/32024927
复制相似问题