博主信息
博文 91
粉丝 2
评论 4
访问量 146782
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
基于tp5的无限分类
夏日的烈风的博客
原创
1186人浏览过

* 数组层级缩进转换
* @param array $array
* @param int   $pid
* @param int   $level
* @return array
*/
function tree($array, $pid = 0, $level = 1) {
   static $list = [];
   foreach ($array as $v) {
       if ($v['parent_id'] == $pid) {
           $v['level'] = $level;
           $list[]     = $v;
           $this->tree($array, $v['id'], $level + 1);
       }
   }
   return $list;
}

/**
* 构建层级(树状)数组
* @param array  $array 要进行处理的一维数组,经过该函数处理后,该数组自动转为树状数组
* @param string $pid 父级ID的字段名
* @param string $child_key_name 子元素键名
* @return array|bool
*/
function array2tree(&$array, $pid = 'pid', $child_key_name = 'children') {
   $counter = $this->array_children_count($array, $pid);
   if ($counter[0] == 0){
       return false;
   }
   $tree = [];
   while (isset($counter[0]) && $counter[0] > 0) {
       $temp = array_shift($array);
       if (isset($counter[$temp['id']]) && $counter[$temp['id']] > 0) {
           array_push($array, $temp);
       } else {
           if ($temp[$pid] == 0) {
               $tree[] = $temp;
           } else {
               $array = $this->array_child_append($array, $temp[$pid], $temp, $child_key_name);
           }
       }
       $counter = $this->array_children_count($array, $pid);
   }

   return $tree;
}

/**
* 子元素计数器
* @param $array
* @param $pid
* @return array
*/
function array_children_count($array, $pid) {
   $counter = [];
   foreach ($array as $item) {
       $count = isset($counter[$item[$pid]]) ? $counter[$item[$pid]] : 0;
       $count++;
       $counter[$item[$pid]] = $count;
   }

   return $counter;
}

/**
* 把元素插入到对应的父元素$child_key_name字段
* @param        $parent
* @param        $pid
* @param        $child
* @param string $child_key_name 子元素键名
* @return mixed
*/
function array_child_append($parent, $pid, $child, $child_key_name) {
   foreach ($parent as &$item) {
       if ($item['id'] == $pid) {
           if (!isset($item[$child_key_name]))
               $item[$child_key_name] = [];
           $item[$child_key_name][] = $child;
       }
   }

   return $parent;
}

本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学