• 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>';
        }
    }
    

      

  • 相关阅读:
    weka 学习
    支持向量机SVM
    U-Air:When Urban Air Quality Inference Meets Big Data--YuZheng
    城市计算与大数据
    python报错 IndentationError: unindent does not match any outer indentation level
    js 谈this
    js mouseover mouseout 多次触发
    sql语句分页多种方式ROW_NUMBER()OVER
    在GridView中设置每个单元格的数据
    OnRowDeleting事件和OnRowCommand事件之间的触发关系
  • 原文地址:https://www.cnblogs.com/dalaowang/p/9633903.html
Copyright © 2020-2023  润新知