php 當array_push遇上static

WBOY
發布: 2023-03-02 09:56:01
原創
1350 人瀏覽過

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

相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!