<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
時,卻是不會的,靜態變數是存在於整個函數作用域內的,你每次呼叫函數的時候,該變數的值都是會保留的。