• php无限极分类方法


    仅供参考:
    
    //控制器
    $data = M('category')->select();
    $datas = D('Category')->_getTree($data, 0,0,TRUE);
    $datas = $this->echo_tree($datas); print_r($datas);die; //递归取出分类 public function _getTree($data, $parent_id=0, $level=0, $isClear = FALSE){ static $ret = array(); if($isClear) $ret = array(); foreach ($data as $k => $v) { if($v['parentid'] == $parent_id) { // 把level放到这个权限中用来标记当前这个权限是第几级的 $v['level'] = $level; $ret[] = $v; // 再找当前这个权限的子权限 $this->_getTree($data, $v['id'], $level+1); } } return $ret; } public function _getTrees($array, $pid =0, $level = 0){ //声明静态数组,避免递归调用时,多次声明导致数组覆盖 static $list = []; foreach ($array as $key => $value){ // print_r($value);die; //第一次遍历,找到父节点为根节点的节点 也就是pid=0的节点 if ($value['parentid'] == $pid){ //父节点为根节点的节点,级别为0,也就是第一级 $value['level'] = $level; //把数组放到list中 $list[] = $value; //把这个节点从数组中移除,减少后续递归消耗 // unset($array[$key]); //开始递归,查找父ID为该节点ID的节点,级别则为原级别+1 $this-> _getTrees($array, $value['id'], $level+1); } } return $list; }

     上面两种方法只是标记的哪个是以及,哪个是二级,下面再用个暴力点的,直接直观的显示出来等级的划分

    /**
     * 输出树结构
     * @param  array 数据源
     * @return void
     */
    function echo_tree($tree) {
        foreach ($tree as $row) {
            for ($i = $row['level']; $i > 0; $i--) {
                echo '|----';
            }
            echo $row['name'];
            echo '<br>';
        }
    }
    

      

  • 相关阅读:
    Yii2的相关学习记录,后台模板和gii(三)
    Yii2的相关学习记录,初始化Yii2(二)
    Yii2的相关学习记录,下载Yii2(一)
    虚拟机上网总结
    纯Java实现微信朋友圈分享图
    【集合框架】JDK1.8源码分析之ArrayList详解(一)
    Java中字符串相加和字符串常量相加区别
    onTouchEvent中,跟随手指滑动的view出现抖动
    Android CHM文件阅读器
    CHM格式
  • 原文地址:https://www.cnblogs.com/dalaowang/p/9633903.html
Copyright © 2020-2023  润新知