PHP 所支援的資料型態 (data types) 有 8 種:
1. boolean
2. integer
3. floating (double)
4. string
5. array
6. object
7. resource
8. NULL
第 1~4 種型別稱為 scalar types (),第 5~6 種稱為 compound types (複合型別),最後第 7 與第 8 種則是特殊型別。
PHP 的變數屬鬆散資料型別,雖然支援 8 種不同的型態,但在初始化變數時不必宣告型態,而是在計算時動態 (dynamic) 決定,而非由撰寫程式的人決定。如果要強制設定變數的資料型別的話,可以利用 settype() 函數,或利用 C 語言的強迫轉型方式 (type casting)。
PHP 的鬆散資料型別,即我們給定什麼值,該變數即為什麼型別,或是如何使用該變數,該變數即為適當的型別,例如:
<?php $foo = "0"; // $foo 為 string (ASCII 48) $foo++; // $foo 變成 string "1" (ASCII 49) $foo += 1; // $foo 變成 integer (2) $foo = $foo + 1.3; // $foo 變成 double (3.3) $foo = 5 + "10 Little Piggies"; // $foo 為 integer (15) $foo = 5 + "10 Small Pigs"; // $foo 為 integer (15) ?>
另外還有一點,PHP 的變數都是以 $ (dollar sign) 開頭,並且變數名稱有大小寫之分,例如:
$name $Name
是兩個不同的變數。
當我們指定值 (value) 給變數時,事實上我們是指定 expression 最後的值給變數,例如:
$a = 5+5*2;
$a 的值為 5+5*2 最後的結果,即 15。
在 PHP 裡,除了給定值給變數外,還可以給定 reference 給變數。也就是,該變數為另外一個變數的 reference,reference 的意義很像是 "becomes an alias for" 或是 "points to",給定 reference 的方法為,在原來的變數前加上 & (ampersand) 符號,再指定給另外一個變數。例如:
<?php $foo = 5; // $foo 為 integer 5 $num = &$foo; // $num 為 $foo 的 reference ?>
上例中,&$foo 表示將 $foo 的 reference 指定給 $num 變數,當我們改變 $num 的值,等於改變 $foo 的值,也就是:
$num = 10; echo $foo; // 輸出 10
使用參考時,來源必須是一個變數名稱,例如:
<?php $foo = 10; $bar = &$foo; // 正確的寫法 $bar = &(1+2*2); // 錯誤的寫法!!!
function test() { return 0; }
$bar = &test(); // 錯誤的寫法!!! ?>
--jollen