Blogger Information
Blog 81
fans 1
comment 0
visits 124154
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
TP5.1的无限分类
有什么是忘不了的的博客
Original
1245 people have browsed it

关于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}嵌套完事。

努力学习,他天天向上。


Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post