热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

三级数组查询

$datadb::name(AuthRule)->select();$datalist_to_tree2($data,id,pid);aaa($data)

$data = db::name('AuthRule')->select();
$data = list_to_tree2($data,'id','pid');//aaa($data);
// halt($data);
$this->assign("nodeList", $data);
return $this->fetch();

 

/**
 * 把返回的数据集转换成Tree
 * @access public
 * @param array $list 要转换的数据集
 * @param string $pid parent标记字段
 * @param string $level level标记字段
 * @return array
 */
function list_to_tree2($list, $pk='id',$pid = 'pid',$child = '_child',$root=0) {
    // 创建Tree
    $tree = array();
    if(is_array($list)) {
        // 创建基于主键的数组引用
        $refer = array();
        foreach ($list as $key => $data) {
            $refer[$data[$pk]] =& $list[$key];//取出每个栏目id作为键名,
        }
        foreach ($list as $key => $data) {//开始循环,key从0开始一个一个往下走0123.。。
            // 判断是否存在parent
            $parentId = $data[$pid];//echo $parentId.'|';//0|112|116|117|112输出每个数组里的pid
            if ($root == $parentId) {//key从0开始循环,如果是一级栏目pid==0
                $tree[] =& $list[$key]; //用连接符,吧数组放到tree里面
            }else{
            //如果pid不是0,那就是二级栏目
                if (isset($refer[$parentId])) {
                    $parent =& $refer[$parentId];//用pid去refer数组,匹配出父栏目数组,用连接符拼接到这里
                    $parent[$child][] =& $list[$key];aaa($parent);//将当前二级栏目放到父栏目下,拼接成二维数组
                }
            //仔细看list数组数据格式,第一遍key是0开始循环走的是tree哪里,
            //第二遍从1开始走,走到parent这里,
            }
        }
    }
    return $tree;
}

打印出的数据格式:

 

 

$list = Array
(
    [0] => Array
        (
            [id] => 112
            [name] => /Admin
            [title] => 后台
            [type] => 1
            [node_icon] => 
            [class_icon] => 
            [status] => 1
            [condition] => 
            [sort] => 0
            [pid] => 0
            [level] => 1
            [update_time] => 1532081114
            [create_time] => 1510821470
            [is_display] => 1
        )

    [1] => Array
        (
            [id] => 117
            [name] => /Admin/Index/index
            [title] => 后台首页
            [type] => 1
            [node_icon] => 
            [class_icon] => 
            [status] => 1
            [condition] => 
            [sort] => 0
            [pid] => 116
            [level] => 3
            [update_time] => 1510821714
            [create_time] => 1510821714
            [is_display] => 1
        )
}

$refer = Array
(
    [112] => Array
        (
            [id] => 112
            [name] => /Admin
            [title] => 后台
            [type] => 1
            [node_icon] => 
            [class_icon] => 
            [status] => 1
            [condition] => 
            [sort] => 0
            [pid] => 0
            [level] => 1
            [update_time] => 1532081114
            [create_time] => 1510821470
            [is_display] => 1
        )

    [117] => Array
        (
            [id] => 117
            [name] => /Admin/Index/index
            [title] => 后台首页
            [type] => 1
            [node_icon] => 
            [class_icon] => 
            [status] => 1
            [condition] => 
            [sort] => 0
            [pid] => 116
            [level] => 3
            [update_time] => 1510821714
            [create_time] => 1510821714
            [is_display] => 1
        )
)

$tree = Array
(
    [0] => Array
        (
            [id] => 112
            [name] => /Admin
            [title] => 后台
            [type] => 1
            [node_icon] => 
            [class_icon] => 
            [status] => 1
            [condition] => 
            [sort] => 0
            [pid] => 0
            [level] => 1
            [update_time] => 1532081114
            [create_time] => 1510821470
            [is_display] => 1
        )

)


$parent = Array
(
    [id] => 116
    [name] => /Admin/Index
    [title] => 首页
    [type] => 1
    [node_icon] => 
    [class_icon] => 
    [status] => 1
    [condition] => 
    [sort] => 1
    [pid] => 112
    [level] => 2
    [update_time] => 1510821685
    [create_time] => 1510821685
    [is_display] => 1
    [is_status] => 1
    [_child] => Array
        (
            [0] => Array
                (
                    [id] => 117
                    [name] => /Admin/Index/index
                    [title] => 后台首页
                    [type] => 1
                    [node_icon] => 
                    [class_icon] => 
                    [status] => 1
                    [condition] => 
                    [sort] => 0
                    [pid] => 116
                    [level] => 3
                    [update_time] => 1510821714
                    [create_time] => 1510821714
                    [is_display] => 1
                    [is_status] => 1
                )

        )

)

  

 页面:

管理权限
{foreach name="nodeList" item="level1"} {present name="level1['_child']"} {foreach name="level1['_child']" item="level2" } {present name="$level2['_child']"} {volist name="level2['_child']" id="level3"} {present name="$level3['_child']"} {/present} {/volist} {/present} {/foreach} {/present} {/foreach}

  


推荐阅读
  • 网址:https:vue.docschina.orgv2guideforms.html表单input绑定基础用法可以通过使用v-model指令,在 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 可空类型可空类型主要用于参数类型声明和函数返回值声明。主要的两种形式如下: ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • 本文介绍了一种在PHP中对二维数组根据某个字段进行排序的方法,以年龄字段为例,按照倒序的方式进行排序,并给出了具体的代码实现。 ... [详细]
  • 本文介绍了使用Spark实现低配版高斯朴素贝叶斯模型的原因和原理。随着数据量的增大,单机上运行高斯朴素贝叶斯模型会变得很慢,因此考虑使用Spark来加速运行。然而,Spark的MLlib并没有实现高斯朴素贝叶斯模型,因此需要自己动手实现。文章还介绍了朴素贝叶斯的原理和公式,并对具有多个特征和类别的模型进行了讨论。最后,作者总结了实现低配版高斯朴素贝叶斯模型的步骤。 ... [详细]
  • 本文介绍了利用ARMA模型对平稳非白噪声序列进行建模的步骤及代码实现。首先对观察值序列进行样本自相关系数和样本偏自相关系数的计算,然后根据这些系数的性质选择适当的ARMA模型进行拟合,并估计模型中的位置参数。接着进行模型的有效性检验,如果不通过则重新选择模型再拟合,如果通过则进行模型优化。最后利用拟合模型预测序列的未来走势。文章还介绍了绘制时序图、平稳性检验、白噪声检验、确定ARMA阶数和预测未来走势的代码实现。 ... [详细]
  • 学习Java异常处理之throws之抛出并捕获异常(9)
    任务描述本关任务:在main方法之外创建任意一个方法接收给定的两个字符串,把第二个字符串的长度减1生成一个整数值,输出第一个字符串长度是 ... [详细]
  • Todayatworksomeonetriedtoconvincemethat:今天在工作中有人试图说服我:{$obj->getTableInfo()}isfine ... [详细]
  • 本文总结和分析了JDK核心源码(2)中lang包下的基础知识,包括常用的对象类型包和异常类型包。在对象类型包中,介绍了Object类、String类、StringBuilder类、StringBuffer类和基本元素的包装类。在异常类型包中,介绍了Throwable类、Error类型和Exception类型。这些基础知识对于理解和使用JDK核心源码具有重要意义。 ... [详细]
  • 简述在某个项目中需要分析PHP代码,分离出对应的函数调用(以及源代码对应的位置)。虽然这使用正则也可以实现,但无论从效率还是代码复杂度方面考虑ÿ ... [详细]
  • 本文介绍了在实现了System.Collections.Generic.IDictionary接口的泛型字典类中如何使用foreach循环来枚举字典中的键值对。同时还讨论了非泛型字典类和泛型字典类在foreach循环中使用的不同类型,以及使用KeyValuePair类型在foreach循环中枚举泛型字典类的优势。阅读本文可以帮助您更好地理解泛型字典类的使用和性能优化。 ... [详细]
author-avatar
珠海南驰焊接检测工程有限公司
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有
     
{foreach name="level3['_child']" item="level4" key="k" } {if cOndition="$level4.is_display eq 1"}|   {/if} {/foreach}