php 函數引用調用有關問題

來源:互聯網
上載者:User
php 函數引用調用問題
function &test(){
static $b = 1;
$b += 2;
return $b;
}
$a = &test();
$a =8;
$c = &test(); // 這裡再次調用test() 函數,為什麼不再執行static $b = 1;這個語句。因為結果表明此時$c=10.
// 如果將static去掉,結果是3. 這個怎麼解釋?謝謝!
echo $c;
------解決思路----------------------
static修飾了變數$b,那麼它就是一直存在的,去掉static,那麼每次調用都會初始化一次
因為$a = &test();(加了&,地址傳遞)所以$a被改變,那麼靜態變數$b的值也被改變,所以在執行$c = &test();時,此時$b的值是8,返回10

------解決思路----------------------
靜態變數只在聲明時賦初值,靜態變數具有全域變數的性質,只是範圍不同
------解決思路----------------------
靜態變數只存在於函數範圍內,也就是說,靜態變數只存活在棧中。一般的函數內變數在函數結束後會釋放,比如局部變數,但是靜態變數卻不會。就是說,下次再調用這個函數的時候,該變數的值會保留下來。
------解決思路----------------------
靜態變數只在聲明時賦初值,靜態變數具有全域變數的性質,只是範圍不同 +1
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.