码迷,mamicode.com
首页 > 编程语言 > 详细

将树形结构的数组按照顺序遍历为二维数组

时间:2016-10-28 19:50:28      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:ack   .com   ati   osc   http   节点   无限级分类   --   []   

/**
 * 将树形结构的数组按照顺序遍历为二维数组
 * renxing,2015年8月7日 11:06:47
 */
function arr_child ($array) {
 static $res;
 if (!is_array($array)) {
  return false;
 }
 foreach ($array as $k=>$v) {
  if (is_array($v) && isset($v[‘child‘])) {
   $child = $v[‘child‘]; //将这个数组的子节点赋给变量 $child
   unset($v[‘child‘]); //释放这个数组的所有子节点
   $res[] = $v; //将释放后的数组填充到新数组 $res
   arr_child ($child); //递归处理释放前的包含子节点的数组
  } else {
   $res[] = $v;
  }
 }
 return $res;
}

技术分享

【原数组结构】

技术分享

 

 

【转换后的数组】

 技术分享


《附加:上面的树形结构数组怎么来的?》

/**
 * cateList
 * renxing,2015年8月6日 15:55:59
 * 十分牛逼的算法By:http://www.oschina.net/code/snippet_173183_11767
 */
    public function cateListLg($list){
     //先对数组基本的转换
     $items = array();
     foreach ($list as $k=>$v){
     $items[$v[‘cate_id‘]] = $v;
     }
     //qq($items);
 
     //将所有分类设置为无限级分类的形式
     $tree = array(); //格式化好的树
     foreach ($items as $item){
     if (isset($items[$item[‘parent_id‘]])){
     $items[$item[‘parent_id‘]][‘child‘][] = &$items[$item[‘cate_id‘]];
     }else{
     $tree[] = &$items[$item[‘cate_id‘]];
     }
     }
     
     //qq($tree);
     return $tree;
    }

【代码截图】

技术分享

 

 

【初始数据】

技术分享

【select的结构】

 技术分享

【转换树形后的结构】----即:本文最上面的结构

技术分享

 

 

 

 

将树形结构的数组按照顺序遍历为二维数组

标签:ack   .com   ati   osc   http   节点   无限级分类   --   []   

原文地址:http://www.cnblogs.com/renxing123/p/6008938.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!