Maison >développement back-end >tutoriel php >php 当array_push遇上static
<code>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; }</code>
用了static array_push的值就不会出现重复,一般情况下array_push只要push相同的值就会出现重复值;
为什么用了static之后就不会出现重复值呢?
<code>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; }</code>
用了static array_push的值就不会出现重复,一般情况下array_push只要push相同的值就会出现重复值;
为什么用了static之后就不会出现重复值呢?
具体代码没有去看,有没有重复值先不管,正常一般的函数内变量在函数结束后会释放,但当你在函数中将变量设置为 staitc
时,却是不会的,静态变量是存在于整个函数作用域内的,你每次调用函数的时候,该变量的值都是会保留的。