我有一个带父 - 子行的数据库表,一个父 - 多子节点,由字段“parent”链接。在不使用递归的情况下迭代父节点PHP
我知道如何循环,并通过在PHP中使用递归功能打印jerarquy结构,但是当我试图用一个循环代码重现它,我不能在相同的格式呈现数据。这个代码示例列出数据库表中的所有项目,但不能下令,它首先打印顶层,我想经典:
Top 1 >> Level 1 >> Level 2 >> Level 3
Top 2 >> Level 1
Top 3 >> Level 1 >> Level 2
$parent = array();
array_push($parent, 0);
while(!empty($parent)){
foreach($parent as $key => $mother){
unset($parent[$key]);
$sql = "SELECT * FROM levels WHERE parent = " . $mother;
$res = mysql_query($sql);
while($row=mysqli_fetch_object($res)){
print $row->name . "<br />";
array_push($parent, $row->id);
} // while
} // foreach
} // while
这段代码的结果是
前1 顶2 前3 1级 ...
在一个查询中选择需要的所有数据,然后对其进行操作不是更容易吗? – simon
在递归函数的情况下,我认为使用多个SELECT会容易得多。在任何情况下,您都可以考虑使用与数据库中完全相同的结构填充数组。你如何遍历它以优先方式列出数据?递归很容易,我要求一个非递归的方法。 – Cesar