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