我有一个包含文章和版 block 的网站, 每个部分都可以有一个父部分,只要他们喜欢 例如:
subject 1
-subject 2
--subject 3
-subject 4
--subject 5
--subject 6
---subject 7
subject 8
subject 9
等..
现在,我想递归地获取它们,通过 php 和 mysql 最有效的方法是什么?
Tnx 高级。
最佳答案
如果树不是太大,您可以使用一些巧妙的引用在 PHP 中简单地构建树。
$nodeList = array();
$tree = array();
$query = mysql_query("SELECT category_id, name, parent FROM categories ORDER BY parent");
while($row = mysql_fetch_assoc($query)){
$nodeList[$row['category_id']] = array_merge($row, array('children' => array()));
}
mysql_free_result($query);
foreach ($nodeList as $nodeId => &$node) {
if (!$node['parent'] || !array_key_exists($node['parent'], $nodeList)) {
$tree[] = &$node;
} else {
$nodeList[$node['parent']]['children'][] = &$node;
}
}
unset($node);
unset($nodeList);
这将为您提供 $tree
中的树结构,子项位于相应的 children
-slot 中。
我们已经用相当大的树(>> 1000 个项目)完成了这项工作,它非常稳定,而且比在 MySQL 中进行递归查询快得多。
关于php - 具有单个查询的递归类别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3116330/