袁来如此的工作笔记
袁来如此的工作笔记
竹杖芒鞋轻胜马,谁怕? 一蓑烟雨任平生。

php getCateTree 递归树 不重复输出

浏览量:538

php中方法返回值是一个静态数组,重复调用两次这个方法,导致上一次的结果在下一次的结果中显示

这是因为这个静态变量没清掉而已, 直接在调用完方法后, 再调用下将list 释放掉, 就像这样:

class Demo {
    static $list array();
    public function getCateTree($data$id = 0, $lev = 0) {
        foreach ($data as $v) {
            if($v['pid'] == $id){
                $v['lev'] = $lev;
                self::$list[] = $v;
                $this->getCateTree($data$v['id'], $lev + 2);
            }
        }
        return self::$list;        
    }
    public function initStatic() {
        self::$list array();
    }
}
$data array(
    array(
        "id" => "1",
        "pid" => "0",
        "name" => "name1"
    ),
    array(
        "id" => "2",
        "pid" => "0",
        "name" => "name2"
    ),
    array(
        "id" => "3",
        "pid" => "1",
        "name" => "name3"
    ),
    array(
        "id" => "4",
        "pid" => "3",
        "name" => "name4"
    ),
    array(
        "id" => "5",
        "pid" => "1",
        "name" => "name5"
    ),
);
 
echo '<pre>';
$D new Demo();
 
$result1 $D->getCateTree($data"0");
$D->initStatic();
print_r($result1);
 
$result2 $D->getCateTree($data"1");
$D->initStatic();
print_r($result2);



打赏