PHP變數(shù)
變數(shù)是用來(lái)儲(chǔ)存資訊的"容器":
大家在讀初中的時(shí)候呀。老師常會(huì)這麼教大家。
請(qǐng)問,李磊和韓梅梅同學(xué),假如:
##x = 5y = 6
那麼x + y 等於多少呢?大家會(huì)義無(wú)反顧的回答。 x + y 等於11。 接下來(lái)我們看下面的國(guó)中的數(shù)學(xué)知識(shí),請(qǐng)問x + y 的結(jié)果是多少? x = 5y = 6
#x = 8
我估計(jì)大家也會(huì)義無(wú)反顧的回答:x + y 的結(jié)果為14。 這就是變數(shù)!變數(shù)的幾個(gè)特點(diǎn):
PHP 變數(shù)
特點(diǎn):
1.??? 必須以$開始。如變數(shù)x必須寫成$x
2.??? 變數(shù)的首字母不能以數(shù)字開始3.??? 變數(shù)的名字區(qū)分大小寫4.??? 變數(shù)不要以特殊符號(hào)、中文,_不算特殊符號(hào)5.??? 變數(shù)命名有意義(別寫xxx,aaa,ccc這種變數(shù)名)6.??? $ 叫作美元符,英文單字:dollar。 PHP的變數(shù)必須以美元符開始。說明搞PHP有「錢」圖#建立(宣告)PHP 變數(shù)
<?php $txt="Hello world!"; $x=5; $y=10.5; ?>在上面的語(yǔ)句執(zhí)行中,變數(shù)?txt?將保存值?Hello world!,變數(shù)?x?將儲(chǔ)存值?5 。
註解:當(dāng)您賦一個(gè)文字值給變數(shù)時(shí),請(qǐng)?jiān)谖淖种祪蛇吋由弦?hào)。
PHP 是一門弱型別語(yǔ)言
在上面的實(shí)例中,我們注意到,不必向PHP 聲明該變數(shù)的資料類型。
PHP 會(huì)根據(jù)變數(shù)的值,自動(dòng)把變數(shù)轉(zhuǎn)換為正確的資料型別。
在強(qiáng)型別的程式語(yǔ)言中,我們必須在使用變數(shù)前先宣告(定義)變數(shù)的型別和名稱。
PHP 變數(shù)作用域
#變數(shù)的作用域是腳本中變數(shù)可被引用/使用的部分。
PHP 有四個(gè)不同的變數(shù)作用域:
· ? local?????????
#·? global#global
#global#global
#· ?static?????????
· ?parameter
## ##局部和全域作用域局部和全域作用域(loacal? global)
#在所有函數(shù)外部定義的變量,擁有全域作用域。除了函數(shù)外,全域變數(shù)可以被腳本中的任何部分訪問,要在一個(gè)函數(shù)中存取一個(gè)全域變量,需要使用 global 關(guān)鍵字。
實(shí)例
#在PHP 函數(shù)內(nèi)部宣告的變數(shù)是局部變量,僅能在函數(shù)內(nèi)部存?。?p>
<?php header("Content-type:text/html;charset=utf-8"); $x=5; // 全局變量 function myTest() { $y=10; // 局部變量 echo "<p>測(cè)試函數(shù)內(nèi)變量:<p>"; echo "變量 x 為: $x"; //輸出錯(cuò)誤 Notice: Undefined variable: echo "<br>"; echo "變量 y 為: $y"; } myTest(); echo "<p>測(cè)試函數(shù)外變量:<p>"; echo "變量 x 為: $x"; echo "<br>"; echo "變量 y 為: $y"; //輸出錯(cuò)誤 Notice: Undefined variable:在上述實(shí)例中myTest() 函數(shù)定義了$x 和$y 變數(shù)。 $x 變數(shù)在函數(shù)外聲明,所以它是全域變數(shù) , $y 變數(shù)在函數(shù)內(nèi)宣告所以它是
局部變數(shù)。
當(dāng)我們呼叫myTest()函數(shù)並輸出兩個(gè)變數(shù)的值, 函數(shù)將會(huì)輸出局部變數(shù)$y 的值,但不能輸出$x 的值,因?yàn)?x 變數(shù)在函數(shù)外定
義,無(wú)法在函數(shù)內(nèi)使用,如果要在一個(gè)函數(shù)中存取一個(gè)全域變量,則需要使用global 關(guān)鍵字。
然後我們?cè)趍yTest()函數(shù)外輸出兩個(gè)變數(shù)的值,函數(shù)會(huì)輸出全局部變數(shù)$x 的值,但不能輸出$y 的值,因?yàn)?y 變數(shù)在函數(shù)中
定義,屬於局部變數(shù)。
註 你可以在不同函數(shù)中使用相同的變數(shù)名稱,因?yàn)檫@些函數(shù)內(nèi)定義的變數(shù)名稱是局部變量,只作用於該函數(shù)內(nèi)。
PHP global 關(guān)鍵字
global 關(guān)鍵字用於函數(shù)內(nèi)存取全域變數(shù)。
實(shí)例
在函數(shù)內(nèi)呼叫函數(shù)外定義的全域變量,我們需要在函數(shù)中的變數(shù)前加上global 關(guān)鍵字:
<?php $x=10; $y=20; function test(){ global $x,$y; //使用global關(guān)鍵字 $y=$x+$y; } test(); echo $y;//輸出30
PHP 將所有全域變數(shù)儲(chǔ)存在一個(gè)名為$GLOBALS[index] 的陣列中。?index?保存變數(shù)的名稱。這個(gè)陣列可以在函數(shù)內(nèi)部訪問,也
可以直接用來(lái)更新全域變數(shù)。
上面的實(shí)例可以寫成這樣:
<?php $x=5; $y=10; function myTest() { $GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y']; } myTest(); echo $y; ?>
Static 作用域
當(dāng)一個(gè)函數(shù)完成時(shí),它的所有變數(shù)通常都會(huì)被刪除。然而,有時(shí)候您希望某個(gè)局部變數(shù)不要被刪除。
要做到這一點(diǎn),請(qǐng)?jiān)谀谝淮涡孀償?shù)時(shí)使用?static?關(guān)鍵字:
實(shí)例
<?php function myTest() { static $x=0; echo $x; $x++; } myTest(); myTest(); myTest(); myTest(); ?>
然後,每次呼叫函數(shù)時(shí),變數(shù)都會(huì)保留函數(shù)前一次被呼叫時(shí)的值。
註解:該變數(shù)仍然是函數(shù)的局部變數(shù)。
參數(shù)作用域
參數(shù)是透過呼叫程式碼將值傳遞給函數(shù)的局部變數(shù)。
參數(shù)是在參數(shù)清單中聲明的,作為函數(shù)聲明的一部分:
實(shí)例
?php function myTest($x) { echo $x; } myTest(name); ?>
我們將在?PHP 函數(shù)?章節(jié)中對(duì)它做更詳細(xì)的討論。