tp3.2中递归

控制器里:

递归方法:

 //地区
        public function getArea($data,$pid=0,$level=1){
             //地区
            $data=M('company')->order('id')->select();
            //声明一个变量
            static $result;
            foreach($data as $key=>$val){
                if($val['fatherid']==$pid){
                    $val['level']=$level;
                    $result[]=$val;
                    $this->getArea($data,$val['id'],$level+1);//此处id是父级fatherid对应的,如果父级id和表里其他字段对应则改为其他字段
                }

            }
            return $result;
            

        }

另个方法调用:

            $datas=$this->getArea($data);

注意:为提高递归运行效率此处可改为如下:

//判断地区是否有缓存
            $dataarea=S('area');
            if(!empty( $dataarea)){
                 $datas =  $dataarea;
            }else{
                 $datas=$this->getArea($data);
                 S('area',$datas,24*60*60);

            }

视图层:

<div class="select_textul">
                        <ul class="select_first_ul" name="id"> <foreach name="data" item="v">
                            <li value="{$v.id}">{:str_repeat('&nbsp;',$v['level']*3)}{$v.realname}
                                <ul class="select_second_ul" >
                                                           

                                    <li ></li>
                                                                
                                </ul>
                            </li></foreach>

                        </ul>
                        <!-- <select name="id">
                            <option value="0">请选择</option>
                            <foreach name="data" item="v">
                            <option value="{$v.id}">{:str_repeat('&nbsp;',$v['level']*3)}{$v.realname}</option>
                            </foreach>
                        </select> -->
                    </div>


猜你喜欢

转载自blog.csdn.net/tianjingang1/article/details/76922123