PHP第三節(jié)變量介紹
來源:易賢網(wǎng) 閱讀:891 次 日期:2014-05-18 00:27:57
溫馨提示:易賢網(wǎng)小編為您整理了“PHP第三節(jié)變量介紹”,方便廣大網(wǎng)友查閱!

變量名與PHP中其它的標(biāo)簽一樣遵循相同的規(guī)則。一個(gè)有效的變量名由字母或者下劃線開頭,后面跟上任意數(shù)量的字母,數(shù)字,或者下劃線。按照正常的正則表達(dá)式,它將被表述為:'[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'。

Note:$this是一個(gè)特殊的變量,它不能被賦值。

變量默認(rèn)總是傳值賦值。那也就是說,當(dāng)將一個(gè)表達(dá)式的值賦予一個(gè)變量時(shí),整個(gè)原始表達(dá)式的值被賦值到目標(biāo)變量。這意味著,例如,當(dāng)一個(gè)變量的值賦予另外一個(gè)變量時(shí),改變其中一個(gè)變量的值,將不會(huì)影響到另外一個(gè)變量。有關(guān)這種類型的賦值操作,請(qǐng)參閱表達(dá)式一章。

PHP也提供了另外一種方式給變量賦值:引用賦值。這意味著新的變量簡(jiǎn)單的引用(換言之,“成為其別名”或者“指向”)了原始變量。改動(dòng)新的變量將影響到原始變量,反之亦然。

使用引用賦值,簡(jiǎn)單地將一個(gè)&符號(hào)加到將要賦值的變量前(源變量)。

有一點(diǎn)重要事項(xiàng)必須指出,那就是只有有名字的變量才可以引用賦值。

代碼如下:

<?php

$foo=25;

$bar=&$foo;//合法的賦值

$bar=&(24*7);//非法;引用沒有名字的表達(dá)式

functiontest()

{

return25;

}

$bar=&test();//非法

?>

雖然在PHP中并不需要初始化變量,但對(duì)變量進(jìn)行初始化是個(gè)好習(xí)慣。未初始化的變量具有其類型的默認(rèn)值-布爾類型的變量默認(rèn)值是FALSE,整形和浮點(diǎn)型變量默認(rèn)值是零,字符串型變量默認(rèn)值是空字符串或者數(shù)組變量的默認(rèn)值是空數(shù)組。

依賴未初始化變量的默認(rèn)值在某些情況下會(huì)有問題,例如把一個(gè)文件包含到另一個(gè)之中時(shí)碰上相同的變量名。另外把register_globals打開是一個(gè)主要的安全隱患。使用未初始化的變量會(huì)發(fā)出E_NOTICE錯(cuò)誤,但是在向一個(gè)未初始化的數(shù)組附加單元時(shí)不會(huì)。isset()語言結(jié)構(gòu)可以用來檢測(cè)一個(gè)變量是否已被初始化。

預(yù)定義變量

PHP提供了大量的預(yù)定義變量。由于許多變量依賴于運(yùn)行的服務(wù)器的版本和設(shè)置,及其它因素,所以并沒有詳細(xì)的說明文檔。一些預(yù)定義變量在PHP以命令行形式運(yùn)行時(shí)并不生效。

從PHP4.1.0開始,PHP提供了一套附加的預(yù)定數(shù)組,這些數(shù)組變量包含了來自web服務(wù)器(如果可用),運(yùn)行環(huán)境,和用戶輸入的數(shù)據(jù)。這些數(shù)組非常特別,它們?cè)谌址秶鷥?nèi)自動(dòng)生效,例如,在任何范圍內(nèi)自動(dòng)生效。因此通常被稱為自動(dòng)全局變量(autoglobals)或者超全局變量(superglobals)。(PHP中沒有用戶自定義超全局變量的機(jī)制。)超全局變量羅列于下文中;但是為了得到它們的內(nèi)容和關(guān)于PHP預(yù)定義變量的進(jìn)一步的討論以及它們的本質(zhì),請(qǐng)參閱預(yù)定義變量。而且,你也將注意到舊的預(yù)定義數(shù)組($HTTP_*_VARS)仍舊存在。自PHP5.0.0起,用register_long_arrays設(shè)置選項(xiàng)可禁用長(zhǎng)類型的PHP預(yù)定義變量數(shù)組。

變量范圍

變量的范圍即它定義的上下文范圍(也就是它的生效范圍)。大部分的PHP變量只有一個(gè)單獨(dú)的范圍。這個(gè)單獨(dú)的范圍跨度同樣包含了include和require引入的文件。

PHP的全局變量和C語言有一點(diǎn)點(diǎn)不同,在C語言中,全局變量在函數(shù)中自動(dòng)生效,除非被局部變量覆蓋。而PHP中的局部變量不會(huì)被全局變量覆蓋,如果使用會(huì)是變量的缺省初始值。這可能引起一些問題,有些人可能不小心就改變了一個(gè)全局變量。PHP中全局變量在函數(shù)中使用時(shí)必須申明為global。

使用靜態(tài)變量

變量范圍的另一個(gè)重要特性是靜態(tài)變量(staticvariable)。靜態(tài)變量?jī)H在局部函數(shù)域中存在,但當(dāng)程序執(zhí)行離開此作用域時(shí),其值并不丟失。

更多信息請(qǐng)查看IT技術(shù)專欄

更多信息請(qǐng)查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機(jī)網(wǎng)站地址:PHP第三節(jié)變量介紹
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 加入群交流 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65317125(9:00—18:00) 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)