博客列表 >TP5.1的无限分类

TP5.1的无限分类

有什么是忘不了的的博客
有什么是忘不了的的博客原创
2020年06月14日 09:37:071243浏览

关于TP5.1的无限分类。做的时候出现了如下的错误:知识不足的我,被虐来虐去。

    问题:在model中做好无限分类后,前台以至给我提示son字段不存在。我就懵啦,我在无限分类的时候明明就是存的son字段啊咋就没有呢?

/**
 * 无限分类 得到多维数组
 * @param array $arr 需要无限分类的数组
 * @param string $id    数组id
 * @param string $pid   数组父id
 * @param string $child 保存子数组名称
 * @return array    无限分类好的数组。
 */
protected function Tree($arr=array(),$id='id',$pid='pid',$child = "child"){
    if (!is_array($arr) || empty($arr)){
        return array();
    }
    try{
        $key = array_column($arr,$id);
        $items = array_combine($key,$arr);
        foreach ($items as $k => $item){
            if (isset($items[$item[$pid]])){
                $items[$item[$pid]][$child][$item[$id]] = &$items[$k];
            }else{
                $items[0][$child][$item[$id]] = &$items[$k];
            }
        }
    }catch (\Exception $e){
        return array();
    }
    return isset($items[0][$child]) ? $items[0][$child] : array();
}

/**
 * 无限分类 返回一个排好序二维数组
 * @param array $arr    需要无限分类的数组
 * @param string $id    数组id
 * @param string $pid   数组父id
 * @return array        无限分类好的数组。
 */
protected function TreeTow($arr=array(),$id='id',$pid='pid'){
    if (!is_array($arr) || empty($arr)){
        return array();
    }
    try{
        $items = [];
        foreach ($arr as $k=>$v){
            if ($v[$pid] != 0){
                $key = array_column($items,$id);
                $item = array_combine($key,$items);
                $key = array_search($item[$v[$pid]],$items);
                array_splice($items,$key+1,0,[$v]);
            }else{
                array_push($items,$v);
            }
        }
    }catch (\Exception $e){
        return array();
    }
    return $items;
}

我思来想去为啥提示son下标不存在。后来我知道了,因为有的父级下没有子级所以就没有son字段了。所以一直报错下标不存在。。。

然后就只能在循环的时候进行{if}判断一下。。。

<table>
    {volist name="data" id="vo" default="$default"}
        <tr>
            <td>
                <h4>{$vo.pid_text}</h4>
            </td>
           //在这里进行if判断
        {if strtoupper(isset($vo.son)) }
            {volist name="vo.son" id="voson" empty="1"}
            <td>
                <input type="checkbox" value="{$voson.id}" name="power">{$voson.r_name}
            </td>
            {/volist}
        {/if}
        </tr>
    {/volist}
</table>

我也不是很清楚,这是TMD为什么会这样。我以前写的时候直接两个{volist}嵌套完事。

努力学习,他天天向上。


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议