變數
變數是用來暫存資料的工具,使用時會在變數名稱前面加上$符號,通常引用的變數還沒設定數值前為空值,若要設定數值則可以用 "=" 符號來設定。
PHP是一個非強制檢查型別的程式語言(weakly typed language),所以變數在引用時並不需要事先宣告資料型態才能使用。資料型態會自動依變數的內容來決定,這是與其他高階語言不同之處。
變數設定與設定方法:
<?php $name; //宣告變數name,值為空值 $number=17; //宣告變數number,值設定為17 ?>
變數的名稱命名,有些規範需要注意:
- 變數名稱的字首必須是英文大小寫字母(A~Z 或 a~z) 或是底線( _ )
- 變數名稱第二個字元後可以是(1)英文大小寫字母 (2)數字0~9 (3)底線
- 變數名稱長度沒有限制
- 無法使用PHP程式語言保留字
變數宣告和設定數值的同時,我們必須了解該變數的範圍。所謂的變數範圍,即是該變數在整個程式中能夠被使用或看到的範圍,通常可以分為下面4種變數:
1. 區域變數
區域變數即是在特定區域範圍內才能使用的變數,不能在其他的函式中被使用。此外,在函式中的變數若是區域變數,也不能在其他區域中使用。下列例子說明:函數外的變數$number1和函數中的變數$number2,都是區域變數,它們只能在自己所屬的區域內使用,跨到別的區域就無法使用。
例子如下
<?php $number1= 20; function local() //自訂local函數 { $number2= 30; echo "函數中\$number1 = $number1"; //印出變數則出現錯誤 echo "<br>"; echo "函數中\$number2 = $number2"; echo "<br>"; } local(); //呼叫local函數 echo "函數外\$number1 = $number1"; echo "<br>"; echo "函數外\$number2 = $number2"; //印出變數則出現錯誤 ?>
執行結果:
函數中$number1=
函數中$number2=30
函數外$number1=20
函數外$number2=
2. 全域變數
全域變數即是在任何函數範圍內皆可使用該變數。在PHP中並非像其他程式語言一樣是在變數宣告時宣告該變數為全域變數,反而是在函數中利用全域的指令來引用在該函數外的變數。全域變數的使用方法如下:
- 在該函數中將會使用到的函式外的變數宣告為global。
- 利用GLOBAL陣列。
例子說明1 (宣告為global)
<?php $number = 20; function local() //自訂local函數 { global $number; //使用global echo "函數中\$number = $number"; echo "<br>"; } local(); //呼叫local函數 echo "函數外\$number = $number"; ?>
執行結果:
函數中$number=20
函數外$number=20
例子說明2 (GLOBALS陣列)
<?php $GLOBALS['a'] = 20; //使用GLOBALS陣列 function local() //自訂local函數 { echo "函數中\$number =". $GLOBALS['a']; echo "<br>"; } local(); //呼叫local函數 echo "函數外\$number =".$GLOBALS['a']; ?>
執行結果:
函數中$number=20
函數外$number=20
3. 靜態變數
靜態變數即是變數的值,不會因為離開函數而消失,靜態變數會保留最後使用或修改的資料。我們可以使用保留字static來將變數宣告為靜態變數。
例子說明
<?php function local() //自訂local函數 { static $number = 0; //使用static $number = $number+1; echo "函數中\$number = $number"; echo "<br>" } local(); //呼叫local函數 local(); local(); ?>
執行結果:
函數中$number=1
函數中$number=2
函數中$number=3
4. 動態變數
動態變數即是一種變數參照,透過某一種變數名稱來當作另一個變數的參照,使用上會用兩個錢字符號$$來使用動態變數。
例子說明
<?php $M = "Mcdonalds"; //宣告M 變數 $KFC = "Kentucky Fried Chicken"; $store = "M" //宣告store的內容為變數M 的名稱 echo $$store; //使用動態變數 echo "<br>"; $store = "KFC"; echo $$store; ?>
執行結果
Mcdonalds
Kentucky Fried Chicken
5. 預設變數
預設變數就是與伺服器或使用者環境相關的系統變數
預設變數 | 說明 |
---|---|
$_SERVER | 儲存伺服器內或使用者環境的資訊陣列變數 |
$_POST | 儲存以POST方式傳入的陣列變數 |
$_GET | 儲存以GET方式傳入的陣列變數 |
$_COOKIE | 儲存以COOKIE方式註冊的陣列變數 |
$_SESSION | 儲存以SESSION方式註冊的陣列變數 |
$_FILES | 儲存以POST方式傳入檔案的陣列變數 |
$_REQUEST | 儲存以POST、GET、COOKIE、FILES方式傳入的陣列變數 |
常數
常數與變數剛好相反,它是定義一些無法改變數值內容。常數可以分為兩種,一種是內建常數,另一種是自訂常數。
內建常數即是系統內已定義的常數工具,主要是提供給程式開發者使用,通常名稱皆為大寫,以下是常見的內建常數:
內建常數 | 說明 |
---|---|
PHP_VERSION | PHP版本 |
PHP_OS | 執行PHP的系統 |
TRUE | 真值 |
FALSE | 假值 |
E_ERROR | 指到最近的錯誤,並中斷程式產生報告,值為1 |
E_WARNING | 指到最近的警告,不會中斷程式,值為2 |
E_PARSE | 分析語法錯誤之處,值為4 |
E_NOTICE | 用於不尋常但不一定是錯誤之處,值為8 |
除了系統內建常數外,我們也可以自定常用的常數,像是定義圓周率等於3.1415,或者是一天小時數等於24...等方式,定義的方法可以透過下列格式來做定義:
define(常數名稱, 常數值);
例子說明
<?php define("PI",3.1415); //定義圓周率 echo $round_area = 3 * 3 * PI; //計算圓面積 ?>
執行結果
28.2735