PHP超牛逼无限极分类生成树方法
发布时间:2020-12-13 02:36:28 所属栏目: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为您提供专业教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |