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

静态数组重复调用前要清空

浏览量:448

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);


打赏