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