php mysql 类别树 ul
php mysql categories tree ul
我创建了一个 php 函数来显示类别树,但我无法获得我需要的输出。
HTML 需要输出:
<ul>
<li>
<a href="#">Main menu</a>
<ul>
<li class="has-child-menu"><a href="#">Second Level</a>
<ul class="thired-level">
<li><a href="index.html">Thired Level 1</a></li>
<li><a href="index.html">Thired Level 2</a></li>
</ul>
</li>
</ul>
</li>
</ul>
这是我从数据库中获取类别的函数
function categoryTree($parent_id = 0){
global $db;
$query = $db->query("SELECT * FROM categories WHERE parent_id = $parent_id ");
if($query->num_rows > 0){
while($row = $query->fetch_assoc()){
echo $row['category_name'];
categoryTree($row['id'] );
}
}
}
您可以编写一个函数来创建数据库数据的平面数组:
function readData ($db)
{
$data = [];
$query = $db->query("SELECT * FROM categories WHERE parent_id = $parent_id ");
if($query->num_rows > 0){
while($row = $query->fetch_assoc()){
$data[] = $row;
}
}
return $data;
}
然后你需要一个递归函数来构建你的嵌套数组,如下所示:
function buildTree(array $elements, $parentId = 0) {
$branch = [];
foreach ($elements as $element) {
if ($element['parent_id'] == $parentId) {
$children = buildTree($elements, $element['id']);
if ($children) {
$element['children'] = $children;
}
$branch[] = $element;
}
}
return $branch;
}
最后分别调用函数:
$data = readData();
$tree = buildTree($data);
我创建了一个 php 函数来显示类别树,但我无法获得我需要的输出。
HTML 需要输出:
<ul>
<li>
<a href="#">Main menu</a>
<ul>
<li class="has-child-menu"><a href="#">Second Level</a>
<ul class="thired-level">
<li><a href="index.html">Thired Level 1</a></li>
<li><a href="index.html">Thired Level 2</a></li>
</ul>
</li>
</ul>
</li>
</ul>
这是我从数据库中获取类别的函数
function categoryTree($parent_id = 0){
global $db;
$query = $db->query("SELECT * FROM categories WHERE parent_id = $parent_id ");
if($query->num_rows > 0){
while($row = $query->fetch_assoc()){
echo $row['category_name'];
categoryTree($row['id'] );
}
}
}
您可以编写一个函数来创建数据库数据的平面数组:
function readData ($db)
{
$data = [];
$query = $db->query("SELECT * FROM categories WHERE parent_id = $parent_id ");
if($query->num_rows > 0){
while($row = $query->fetch_assoc()){
$data[] = $row;
}
}
return $data;
}
然后你需要一个递归函数来构建你的嵌套数组,如下所示:
function buildTree(array $elements, $parentId = 0) {
$branch = [];
foreach ($elements as $element) {
if ($element['parent_id'] == $parentId) {
$children = buildTree($elements, $element['id']);
if ($children) {
$element['children'] = $children;
}
$branch[] = $element;
}
}
return $branch;
}
最后分别调用函数:
$data = readData();
$tree = buildTree($data);