在类中定义递归方法

public function getTree($list,$pid,$level){
//此处须是静态数组,不然递归的时候每次都会声明一个新的数组
static $tree = [];
foreach ($list as $row) {
if ($row['parent_major'] == $pid) {
$row['level'] = $level;
$tree[] = $row;
$this->getTree($list, $row['major_id'], $level+1);
}
}
return $tree;
}

静态变量并不是说其就不能改变值,不能改变值的量叫常量。 其拥有的值是可变的 ,而且它会保持最新的值。说其静态,是因为它不会随着函数的调用和退出而发生变化。即上次调用函数的时候,如果我们给静态变量赋予某个值的话,下次函数调用时,这个值保持不变。
原文地址:https://www.cnblogs.com/zzeng347/p/8318224.html