这篇文章主要介绍了PHP超牛逼无限极分类生成树方法,本文巧用PHP中的引用实现树的生成方法,比递归方法高端多了,需要的朋友可以参考下
你还在用浪费时间又浪费内存的递归遍历无限极分类吗,看了该篇文章,我觉得你应该换换了。
这是我在OSChina上看到的一段非常精简的PHP无限极分类生成树方法,巧在引用,整理分享了。//这个是核心方法
function generateTree($items){
$tree = array();
foreach($items as $item){
if(isset($items[$item["pid"]])){
$items[$item["pid"]]["son"][] =& $items[$item["id"]];
}else{
$tree[] =& $items[$item["id"]];
}
}
return $tree;
}
//这个是从发数据库中取出的数据
$items = array(
1 => array("id" => 1, "pid" => 0, "name" => "安徽省"),
2 => array("id" => 2, "pid" => 0, "name" => "浙江省"),
3 => array("id" => 3, "pid" => 1, "name" => "合肥市"),
4 => array("id" => 4, "pid" => 3, "name" => "长丰县"),
5 => array("id" => 5, "pid" => 1, "name" => "安庆市"),
);
print_r(generateTree($items));
执行结果:Array
(
[0] => Array
(
[id] => 1
[pid] => 0
[name] => 安徽省
[son] => Array
(
[0] => Array
(
[id] => 3
[pid] => 1
[name] => 合肥市
[son] => Array
(
[0] => Array
(
[id] => 4
[pid] => 3
[name] => 长丰县
)
)
)
[1] => Array
(
[id] => 5
[pid] => 1
[name] => 安庆市
)
)
)
[1] => Array
(
[id] => 2
[pid] => 0
[name] => 浙江省
)
)
上面生成树方法还可以精简到5行:$tree = generateTree($items);
function getTreeData($tree){
foreach($tree as $t){
echo $t["name"]."
";
if(isset($t["son"])){
getTreeData($t["son"]);
}
}
}
$tree = generateTree($items)
getTreeData($tree);