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

感谢支持与鼓励~