« 13. 什麼是全域變數? | (回到Blog入口) | 15. 何謂「以變數為名的變數何謂」? »

14. 什麼是靜態變數?

jollen 發表於 October 27, 2006 1:29 PM

有些程式語言 (例如 C) 具有一種稱做靜態變數 (static variables) 的型別,PHP 也支援靜態變數的寫法。

在 PHP 裡,只有區域變數才能、也才需要宣告成靜態變數,正常的區域變數生命期是在函數執行期間,隨函數的執行結束而結束,而靜態變數的生命期是隨整個 PHP 程式結束而結束,但可見度只有該函數。

我們可以利用關鍵字 static 來宣告靜態變數:

<?php function sum() { static $a = 1;
if ($a < 10) { echo $a; $a++; sum(); } }
sum(); ?>

輸出結果:

123456789

區域或全域變數都不是靜態變數,因為函數執行結束後,變數的值並不會被保留。而所謂的靜態變數意思就是說,當函數執行結束後,該變數的值仍然會被保留,因此第 2 次呼叫該函數時,靜態變數之前的值仍然存在。

--jollen

版權聲明

請參閱頁面底部的 CC 授權條款。此外,Jollen's PHP 專欄禁止引用、修改與轉貼,如果您想與朋友分享的話,我們只允許網站連結(hyperlink)的形式。

發表一個評論

(如果你此前從未在此 Blog 上發表過評論,則你的評論必須在 Blog 主人驗證後才能顯示,請你耐心等候。)

| Top | Jollen's Forum |
Jollen's PHP 專欄採用 Attribution-NonCommercial-NoDerivs 2.5 授權條款
Copyright(c) 2001-2007,2010 www.jollen.org