zoukankan      html  css  js  c++  java
  • 将树形结构的数组按照顺序遍历为二维数组

    /**
     * 将树形结构的数组按照顺序遍历为二维数组
     * 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的结构】

     

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

     

  • 相关阅读:
    0~n-1中缺失的数字
    仅仅反转字母
    字符串相加
    反转字符串&反转字符串中的元音字母
    python OrderedDict类&LRU缓存机制练习题
    协程greenlet、gevent、猴子补丁
    生产者与消费者(两个线程之间的通信---队列实现)
    jquery的on()
    Python之内置类型
    Python之比较运算符
  • 原文地址:https://www.cnblogs.com/rxbook/p/6008938.html
Copyright © 2011-2022 走看看