php 当array_push遇上static
程序员文章站
2022-03-19 08:12:07
...
public function find_children_cat($cat_id, $data)
{
static $tem=array();
foreach ($data as $val)
{
if ( $val['parent_id'] == $cat_id )
{
array_push($tem, $val['cat_id']);
$this->find_children_cat($val['cat_id'], $data);
}
}
return $tem;
}
用了static array_push的值就不会出现重复,一般情况下array_push只要push相同的值就会出现重复值;
为什么用了static之后就不会出现重复值呢?
回复内容:
public function find_children_cat($cat_id, $data)
{
static $tem=array();
foreach ($data as $val)
{
if ( $val['parent_id'] == $cat_id )
{
array_push($tem, $val['cat_id']);
$this->find_children_cat($val['cat_id'], $data);
}
}
return $tem;
}
用了static array_push的值就不会出现重复,一般情况下array_push只要push相同的值就会出现重复值;
为什么用了static之后就不会出现重复值呢?
具体代码没有去看,有没有重复值先不管,正常一般的函数内变量在函数结束后会释放,但当你在函数中将变量设置为 staitc
时,却是不会的,静态变量是存在于整个函数作用域内的,你每次调用函数的时候,该变量的值都是会保留的。