php之变量笔记
一、PHP 變量規(guī)則:
變量以 $ 符號開頭,其后是變量的名稱
變量名稱必須以字母或下劃線開頭
變量名稱不能以數(shù)字開頭
變量名稱只能包含字母數(shù)字字符和下劃線(A-z、0-9 以及 _)
變量名稱對大小寫敏感($y 與 $Y 是兩個不同的變量)
代碼舉例:
- 變量以 $ 符號開頭,其后是變量的名稱
運行結(jié)果:
6- 變量名稱必須以字母或下劃線開頭
運行結(jié)果:
1 2 3- 變量名稱不能以數(shù)字開頭
運行結(jié)果:
報錯內(nèi)容: Parse error: syntax error, unexpected '1' (T_LNUMBER), expecting variable (T_VARIABLE) or '{' or '$' in F:\xampp\htdocs\test\phptest.php on line 2- 變量名稱只能包含字母數(shù)字字符和下劃線(A-z、0-9 以及 _)
運行結(jié)果:
1 2 3 4 5- 變量名稱對大小寫敏感($y 與 $Y 是兩個不同的變量)
運行結(jié)果:
1 2 3 4注:以上的舉例中,我們不需要聲明變量的數(shù)據(jù)類型,php會根據(jù)變量的值,自動把變量轉(zhuǎn)換為正確的數(shù)據(jù)類型
二、php變量作用域
在 PHP中,可以在腳本的任意位置對變量進(jìn)行聲明。
變量的作用域指的是變量能夠被引用/使用的那部分腳本(就是那部分腳本中包含局部變量,全局變量或靜態(tài)變量就叫做變量的作用域)
PHP 有三種不同的變量作用域:
- local(局部)
- global(全局)
- static(靜態(tài))
Local 和 Global 作用域:
函數(shù)之外聲明的變量擁有 Global 作用域,只能在函數(shù)以外進(jìn)行訪問。
函數(shù)內(nèi)部聲明的變量擁有 LOCAL 作用域,只能在函數(shù)內(nèi)部進(jìn)行訪問。
下面的例子測試了帶有局部和全局作用域的變量:
運行結(jié)果:
測試函數(shù)內(nèi)部的變量:Notice: Undefined variable: x in F:\xampp\htdocs\test\phptest.php on line 7 變量 x 是: 變量 y 是:10 測試函數(shù)之外的變量:變量 x 是:5Notice: Undefined variable: y in F:\xampp\htdocs\test\phptest.php on line 17 變量 y 是:注:你可以在不同的函數(shù)中創(chuàng)建名稱相同的局部變量,因為局部變量只能被在其中創(chuàng)建它的函數(shù)所識別
三、PHP global 關(guān)鍵詞
- global 關(guān)鍵詞用于在函數(shù)內(nèi)訪問全局變量
要做到這一點,請在(函數(shù)內(nèi)部)變量前面使用 global 關(guān)鍵詞:
運行結(jié)果:
15- PHP 同時在名為 $GLOBALS[index] 的數(shù)組中存儲了所有創(chuàng)建的全局變量。下標(biāo)存有變量名。這個數(shù)組在函數(shù)內(nèi)也可以訪問,并能夠用于直接更新全局變量
舉例:
運行結(jié)果:
8 15四、PHP static 關(guān)鍵詞
- 通常,當(dāng)函數(shù)完成/執(zhí)行后,會刪除所有變量與它的值。不過,有時我需要不刪除某個局部變量,要完成這一點,請在您首次聲明變量時使用 static 關(guān)鍵詞:
然后,每當(dāng)函數(shù)被調(diào)用時,這個局部變量所存儲的信息都是函數(shù)最后一次被調(diào)用時所包含的信息
運行結(jié)果:
0 1 21 2 3 4 5- 如果函數(shù)內(nèi)的局部變量不使用static關(guān)鍵字,會是什么樣呢?
運行結(jié)果:
1 1- 代碼測試段,看看全局變量是否可以使用static關(guān)鍵詞:
以上注釋的兩行代碼先使用第二行代碼,之后注釋第一行代碼,選用第三行代碼,運行結(jié)果都是一樣的,為什么呢?
因為,不管全局變量使沒使用static關(guān)鍵詞,函數(shù)里的$GLOBALS[]都會更新全局變量$y,使函數(shù)外的全局變量$y變成一個新值。(也就是說雖然myTest函數(shù)完成后會刪除函數(shù)內(nèi)部的的所有變量與其值,但是它的值已經(jīng)被$GLOBALS[]更新,一個新值已經(jīng)賦給了全局變量$y,它又不會刪除,就這樣依次循環(huán)啦)
有人就要問了,為什么不在函數(shù)內(nèi)使用全局變量$y,請問,如果使用了全局變量$y,不使用$GLOBALS[],你在函數(shù)內(nèi)可以獲得全局變量嗎!!!
所以,雖然static關(guān)鍵字可以在函數(shù)外(在全局變量上使用),但最終的運行結(jié)果跟它是沒有關(guān)系的(因為函數(shù)里的$GLOBALS[]更新了全局變量$y,還要static有啥用…),所以全局變量使不使用static關(guān)鍵字,都無所謂
最后,結(jié)果就是:全局變量不要使用static關(guān)鍵字(個人理解),只對函數(shù)中的局部變量使用,因為局部變量不會自己更新變量值,函數(shù)運行后就會刪除變量與其值!!!
注:筆記總結(jié)于 http://www.w3school.com.cn/php/php_variables.asp
總結(jié)
- 上一篇: 关于青春的名人名言大全203个
- 下一篇: 关于爱情的伤心签名大全最新211个