我有一个名为Category的表,遵循以下模式:
id |名字| PARENT_ID
因此,如果类别x是y的子元素,则x的parent_id是y的id。
我还有一个函数返回一个包含每行所有列的数组。
它的返回格式为:
returned_array [category_id1] = array([category_name],[category_parent_id] returned_array [category_id2] = array([category_name],[category_parent_id]
等......负责将所有类别提取到一个数组中。
现在我想编写一个将返回
的函数<li>Category 1
<li>Child 1</li>
<li>Child 2
<li>Child x</li>
</li>
</li>
<li>Category 2
<li>Child 1</li>
// etc
</li>
我在这方面打破了我的头脑,但我不知道如何做到这一点......
答案 0 :(得分:0)
试试这个。如果有错误,我没有测试它,但这个想法就在这里
<?php
$aCats = array(
1 = array(
'name'=>'Category 1',
'childs'=> array(
2 = array(
'name'=>'Category 1 - A',
'childs'=> array();
);
);
);
);
function printParentChild($aCats)
{
$sHtml = '';
foreach($aCats as $aCat)
{
if(array_key_exists('childs', $aCat) && is_array($aCat['childs']) )
$sHtml .= printParentChild($aCat['childs']);
$sHtml .= '<li>'.$aCat.'</li>';
}
return '<ul>'.$sHtml.'</ul>';
}
echo $aCats;
答案 1 :(得分:-1)
在这种情况下,你需要2个数组来轻松处理它而没有复杂的,第一个数组应该包含所有的类别,例如)
$catArr[categoryId] = 'categoryName';
你的第二个数组应该只有父ID作为键,子数组作为值,例如
$subCatArr[parentId] = Array([0]=>firstChildId, [1]=> secondChildId ..etc)
$subCatArr[parentId] = Array([0]=>firstChildId, [1]=> secondChildId ..etc)
现在你可以循环遍历你的$ subCatArr数组了,还有一个循环来获取子节点并从$ catArr数组中获取类别的名称。
你可以使用这种方法,这种方法使用得很多,也很容易,
首先运行查询以获取categoryname和不同的父Id并循环遍历它并在循环内运行另一个查询以获取所有具有父Id作为当前循环id的记录。