首頁  >  文章  >  後端開發  >  php 當array_push遇上static

php 當array_push遇上static

WBOY
WBOY原創
2016-12-01 01:27:191355瀏覽

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn