加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP超牛逼无限极分类生成树方法

发布时间:2020-12-13 02:36:28 所属栏目:PHP教程 来源:网络整理
导读:《PHP实战:PHP超牛逼无限极分类生成树方法》要点: 本文介绍了PHP实战:PHP超牛逼无限极分类生成树方法,希望对您有用。如果有疑问,可以联系我们。 PHP编程 你还在用浪费时间又浪费内存的递归遍历无限极分类吗,看了该篇文章,我感到你应该换换了. PHP编程

《PHP实战:PHP超牛逼无限极分类生成树方法》要点:
本文介绍了PHP实战:PHP超牛逼无限极分类生成树方法,希望对您有用。如果有疑问,可以联系我们。

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,'name' => '浙江省'),
??? 3 => array('id' => 3,'pid' => 1,'name' => '合肥市'),
??? 4 => array('id' => 4,'pid' => 3,'name' => '长丰县'),
??? 5 => array('id' => 5,'name' => '安庆市'),
);
print_r(generateTree($items));

PHP编程可以看到下面打印的成果:

代码如下:

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();
}

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

代码如下:

/**
?* 如何取数据格局化的树形数据
?*/
$tree = generateTree($items);
function getTreeData($tree){
??? foreach($tree as $t){
??????? echo $t['name'].'<br>';
??????? if(isset($t['son'])){
??????????? getTreeData($t['son']);
??????? }
??? }
}
getTreeData($tree);

欢迎参与《PHP实战:PHP超牛逼无限极分类生成树方法》讨论,分享您的想法,编程之家 52php.cn为您提供专业教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读