【发布时间】:2017-02-01 00:28:16
【问题描述】:
我有一个包含父子行的数据库表,一个父多个子,由字段“父”链接。
我知道如何在 PHP 中使用 recursive 函数循环和打印 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级 ...
【问题讨论】:
-
在一个查询中选择您需要的所有数据然后对其进行处理不是更容易吗?
-
在递归函数的情况下,我认为使用几个SELECT会容易得多。在任何情况下,您都可以考虑填充了与数据库中完全相同的结构的数组。您如何遍历它以以首选方式列出数据?递归很简单,求一个非递归的方式。