养殖 - 种植 - 加工 - 创业 - 骗局 - 问答 - 百科 - 节气 - 民俗 - 手机版
您的当前位置: 致富创业网 > 养殖致富 > 养羊 > 【PHP超牛逼无限极分类生成树方法】无限极产品好用吗

【PHP超牛逼无限极分类生成树方法】无限极产品好用吗

来源:养羊 时间:2018-08-16 点击:

这篇文章主要介绍了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行:

复制代码 代码如下:

function generateTree($items){

foreach($items as $item)

$items[$item["pid"]]["son"][$item["id"]] = &$items[$item["id"]];

return isset($items[0]["son"]) ? $items[0]["son"] : array();

}

上面这种无限极分类数据树形结构化的方法值得借鉴。但是我觉得这段代码实际用途并不明显啊,你想取出格式化的树形数据还是要递归啊:

复制代码 代码如下:

/**

* 如何取数据格式化的树形数据

*/

$tree = generateTree($items);

function getTreeData($tree){

foreach($tree as $t){

echo $t["name"]."
";

if(isset($t["son"])){

getTreeData($t["son"]);

}

}

}

getTreeData($tree);

推荐访问:生成 方法 无限极 PHP超牛逼无限极分类生成树方法 php无限极分类代码

致富创业网 www.csyzzm.com

Copyright © 2002-2018 . 致富创业网 版权所有 湘ICP备12008529号-1

Top