PHP變數
什麼是變數
變數是指在程式執行過程中數值可以變化的量。變數透過一個名字(變數名)來標識。系統為程式中的每
一個變數分配一個儲存單元,變數名實質上就是電腦記憶體單元的命名。因此,借助變數名稱即可存取記憶體
中的資料。
變數是用來儲存資訊的"容器":
實例
<?php $x=5; $y=6; $z=$x+$y; echo $z; ?>
與代數類似
x=5
y=6
z=x+y
#在代數中,我們使用字母(如x),並給它賦值(如5 )。
從上面的表達式 z=x+y ,我們可以計算 z 的值為 11。
在 PHP 中,這些字母稱為變數。
變數是用來儲存資料的容器。
PHP 變數
與代數類似,可以給PHP 變數賦予某個值(x=5)或者表達式(z=x+y)。
變數可以是很短的名稱(如 x 和 y)或更具描述性的名稱(如 age、carname、totalvolume)。
PHP 變數規則:
· 變數以$ 符號開始,後面接著變數的名稱
· 變數名稱必須以字母或底線開始開始為下劃線字元開始符號
· 變數名稱只能包含字母數字字元以及底線(A-z、0-9 和_ )
· 變數名稱無法包含空格#
# $Y 是兩個不同的變因)
$var = 'hello'; //正確
$var123 # //錯誤$_var = 'hello'; //正確
$@#var = 'hello'; 語#PH
o
# 她
'# PHP 變數都是區分大小寫的。
#建立(宣告)PHP 變數
PHP 沒有宣告變數的指令。 變數在您第一次賦值給它的時候被創建:實例<?php $txt="Hello world!"; $x=5; $y=10.5; ?>在上面的語句執行中,變數 txt 將保存值 Hello world!,且變數 x 將保存值 5。 註解:當您賦一個文字值給變數時,請在文字值兩側加上引號。 變數賦值:是指給變數一個具體的資料值,對於字串和數字類型的變量,可以透過「=」來實現賦值。 語法:<?php $name=value;?>######name是變數名,根據需求和喜好可以隨意取,但是最好用和功能或作用相關的詞。 ######value是要賦給變數的值。 ######範例:###
<?php $color="red"; $_name="jack"; ?>
#PHP 是一門弱型別語言
在上面的實例中,我們注意到,不必向PHP 聲明該變數的資料類型。
PHP 會根據變數的值,自動把變數轉換為正確的資料型別。
在強型別的程式語言中,我們必須在使用變數前先宣告(定義)變數的型別和名稱。
PHP 變數作用域
變數的作用域是腳本中變數可被引用/使用的部分。
PHP 有四種不同的變因作用域:
· local
·
##局部和全域作用域在PHP 函數內部宣告的變數是局部變量,只能在函數內部存取:
#實例<?php $x=5; // 全局变量 function myTest() { $y=10; // 局部变量 echo "<p>测试函数内变量:<p>"; echo "变量 x 为: $x"; echo "<br>"; echo "变量 y 为: $y"; } myTest(); echo "<p>测试函数外变量:<p>"; echo "变量 x 为: $x"; echo "<br>"; echo "变量 y 为: $y"; ?>##在上述實例中myTest() 函數定義了$x 和$y 變數。 $x 變數在函數外聲明,所以它是全域變數 , $y 變數在函數內宣告所以它是局部變數。 當我們呼叫myTest()函數並輸出兩個變數的值, 函數將會輸出局部變數$y 的值,但不能輸出$x 的值,因為$x 變數在函數外定義,無法在函數內使用,如果要在函數中存取一個全域變量,則需要使用global 關鍵字。
然後我們在myTest()函數外輸出兩個變數的值,函數會輸出全局部變數$x 的值,但不能輸出$y 的值,因為$y 變數在函數中定義,屬於局部變數。
你可以在不同函數中使用相同的變數名稱,因為這些函數內定義的變數名稱是局部變量,只作用於該函數內。
#PHP global 關鍵字
global 關鍵字用於函數內存取全域變量。
在函數內呼叫函數外定義的全域變量,我們需要在函數中的變數前加上global 關鍵字:實例
<?php $x=5; $y=10; function myTest() { global $x,$y; $y=$x+$y; } myTest(); echo $y; // 输出 15 ?>
PHP 將所有全域變量儲存在一個名為$GLOBALS[index] 的陣列中。 index 保存變數的名稱。這個數組可以在函數內部訪問,也可以直接用來更新全域變數。
上面的實例可以寫成這樣:
實例
<?php $x=5; $y=10; function myTest() { $GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y']; } myTest(); echo $y; ?>
Static 作用域
當函數完成時,它的所有變數通常都會被刪除。然而,有時候您希望某個局部變數不要被刪除。
要做到這一點,請在您第一次宣告變數時使用 static 關鍵字:實例
<?php function myTest() { static $x=0; echo $x; $x++; } myTest(); myTest(); myTest(); ?>
然後,每次呼叫函數時,該變數將會保留函數前一次被呼叫時的值。
註解:此變數仍然是函數的局部變數。
可變變數
可變變數是一種獨特的變量,它允許動態改變一個變數名稱。其工作原理是該變數的名稱有另外一個變數的值來決定,實現過程就是在變數的前面再多加一個"$"。
參數作用域
參數是透過呼叫程式碼將值傳遞給函數的局部變數。
參數是在參數清單中宣告的,作為函數宣告的一部份:
實例
<?php function myTest($x) { echo $x; } myTest(5); ?>
我們將在 PHP 函數 章節對它做更詳細的討論。
系統變數
PHP系統內建的變量,大多使用底線開頭,具體使用,我們後面的課程會介紹
• $GLOBALS 儲存目前腳本中的所有全域變量,其KEY為變數名,VALUE為變數值
• $_SERVER儲存以GET方法提交表單中的資料
• $_POST 儲存以POST方法提交表單中的資料
• $_COOKIE 取得或設定使用者瀏覽器Cookies中儲存的變數陣列
• $_FILES 儲存上傳檔案提交至目前腳本的資料
• $_ENV 儲存目前Web環境變數
• $_GET、$_POST、$_COOKIE和$_SESSION中的所有內容
$_SESSION 儲存目前腳本的會話變數陣列