PHP開發(fā)基礎(chǔ)教程之變量
變量是用于存儲信息的"容器":
見下面的例子
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <?php $x=5; $y=6; $z=$x+$y; echo $z; ?> </body> </html>
一、與代數(shù)類似
x=5
y=6
z=x+y
在代數(shù)中我們使用字母(比如 x)來保存值(比如 5)。
從上面的表達式 z=x+y,我們能夠計算出 z 的值是 11。
?在 PHP 中,這三個字母被稱為變量。
注:請把變量視為存儲數(shù)據(jù)的容器。
二、PHP變量
正如代數(shù),PHP 變量可用于保存值(x=5)和表達式(z=x+y)。
變量的名稱可以很短(比如 x 和 y),也可以取更具描述性的名稱(比如 number、total_volume)。
三、PHP變量規(guī)則
變量以 $ 符號開頭,其后是變量的名稱
?變量名稱必須以字母或下劃線開頭
?變量名稱不能以數(shù)字開頭
變量名稱只能包含字母數(shù)字字符和下劃線(A-z、0-9 以及 _)
變量名稱對大小寫敏感($y 與 $Y 是兩個不同的變量)
注:PHP 變量名稱對大小寫敏感!
實例:
<?php //site = 'Hello'; // 非法變量名;以數(shù)字開頭 $_4site = 'World'; // 合法變量名;以下劃線開頭 $i小明is = 'haha'; // 合法變量名;可以用中文 ?>
四、創(chuàng)建PHP變量
PHP 沒有聲明變量的命令。
變量在您第一次賦值給它的時候被創(chuàng)建:
<?php $txt="Hello world!"; $x=5; $y=10.5; ?>
在上面的語句執(zhí)行中,變量?txt?將保存值?Hello world!,且變量?x?將保存值?5。
注:當您賦一個文本值給變量時,請在文本值兩側(cè)加上引號。
五、PHP是一門類型松散的語言
在上面的實例中,我們注意到,不必向 PHP 聲明該變量的數(shù)據(jù)類型。
PHP 會根據(jù)變量的值,自動把變量轉(zhuǎn)換為正確的數(shù)據(jù)類型。
在強類型的編程語言中,我們必須在使用變量前先聲明(定義)變量的類型和名稱。
六、PHP變量作用域(建議初學者暫時了解,不用深究)
變量的作用域是腳本中變量可被引用/使用的部分。
PHP 有四種不同的變量作用域:
?local
global
?static
?parameter
1.局部和全局作用域
在所有函數(shù)外部定義的變量,擁有全局作用域。除了函數(shù)外,全局變量可以被腳本中的任何部分訪問,要在一個函數(shù)中訪問一個全局變量,需要使用 global 關(guān)鍵字。
在 PHP 函數(shù)內(nèi)部聲明的變量是局部變量,僅能在函數(shù)內(nèi)部訪問:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <?php $x=5; // 全局變量 function myTest() { $y=10; // 局部變量 echo "<p>測試函數(shù)內(nèi)變量:<p>"; echo "變量 x 為: $x"; echo "<br>"; echo "變量 y 為: $y"; } myTest(); echo "<p>測試函數(shù)外變量:<p>"; echo "變量 x 為: $x"; echo "<br>"; echo "變量 y 為: $y"; ?> </body> </html>
2.PHP global關(guān)鍵詞
global 關(guān)鍵字用于函數(shù)內(nèi)訪問全局變量。
在函數(shù)內(nèi)調(diào)用函數(shù)外定義的全局變量,我們需要在函數(shù)中的變量前加上 global 關(guān)鍵字:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <?php $x=5; $y=6; function test(){ global $x,$y; $y=$x+$y; } test(); echo $y; ?> </body> </html>
注:大家可以把global去掉看看是什么效果
PHP 將所有全局變量存儲在一個名為 $GLOBALS[index] 的數(shù)組中。?index?保存變量的名稱。這個數(shù)組可以在函數(shù)內(nèi)部訪問,也可以直接用來更新全局變量。
上面的實例可以寫成這樣:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <?php $x=5; $y=6; function myTest() { $GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y']; } myTest(); myTest(); myTest(); myTest(); echo $y; ?> </body> </html>
注:兩種方法實際的效果是一樣的
3.PHP static關(guān)鍵詞
當一個函數(shù)完成時,它的所有變量通常都會被刪除。然而,有時候您希望某個局部變量不要被刪除。
要做到這一點,請在您第一次聲明變量時使用?static?關(guān)鍵字:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <?php function myTest() { static $x=0; echo $x; $x++; } myTest(); myTest(); myTest(); ?> </body> </html>
注:global內(nèi)的內(nèi)容也會被銷毀嗎???
4.參數(shù)作用域
參數(shù)是通過調(diào)用代碼將值傳遞給函數(shù)的局部變量。
參數(shù)是在參數(shù)列表中聲明的,作為函數(shù)聲明的一部分:
更多詳細介紹請查看PHP 函數(shù)章節(jié)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <?php function test($x) { echo $x; } test(2016); ?> </body> </html>
七、可變變量
可變變量即變量的變量,實質(zhì)就是在已經(jīng)聲明過了的變量前面,再加一個$符號,實例如下
先設(shè)置$x
<?php $x= 'hello'; $$x='xiao ming'; echo "$x ${$x}"; ?>
以上代碼也可以寫成:
<?php $x= 'hello'; $hello='xiao ming'; echo "$x $hello"; ?>
這兩個例子是等價的
注:可變變量用于數(shù)組,必須解決一個模棱兩可的問題。這就是當寫下 $$a[1] 時,解析器需要知道是想要 $a[1] 作為一個變量呢,還是想要 $$a 作為一個變量并取出該變量中索引為 [1] 的值。解決此問題的語法是,對第一種情況用 ${$a[1]},對第二種情況用 ${$a}[1]。
學習心得:
對變量概念的理解,變量就是放信息的容器
變量的四種作用域的應該范圍和區(qū)別