我有一个包含文章和部分的网站,每个部分都可以有一个父部分,例如他们喜欢的部分:
subject 1
-subject 2
--subject 3
-subject 4
--subject 5
--subject 6
---subject 7
subject 8
subject 9
Run Code Online (Sandbox Code Playgroud)
等等..
现在,我想以递归方式获取它们,通过php和mysql执行它的最有效方法是什么?
Tnx在先进.
Ste*_*rig 27
如果树不是太大,您可以使用一些聪明的引用在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);
Run Code Online (Sandbox Code Playgroud)
这将为您$tree提供相应children-slot中子项的树结构.
我们使用相当大的树(>> 1000项)完成了这项工作,它非常稳定,比在MySQL中进行递归查询要快得多.
| 归档时间: |
|
| 查看次数: |
12031 次 |
| 最近记录: |