PHP 不需要明確的宣告變數的資料型態 .也就是說, 假設你設定一個字串給 var,那麼 var 的資料型態就是字串. 如果你設定一個整數給 var,那麼它的資料型態就是 整數.
舉個例子,'+'這個運算子會自動轉換資料的型態. 如果其中有一個運算元的資料型態是double, 那麼所有的運算元都會被當成 double . 否則, 所有的運算元就會被當成整數(integer) , 其結果也會被看成是整數. 有一點 要注意的是, 運算元本身的資料型態並不會被改變, 改變的是運算元如何被運算子看待.
$foo = "0"; // $foo is a string (ASCII 48)
$foo++; // $foo is the string "1" (ASCII 49)
$foo += 1; // $foo is now an integer (2)
$foo = $foo + 1.3; // $foo is now a double (3.3)
$foo = 5 + "10 Little Piggies"; // $foo is a integer (15)
$foo = 5 + "10 Small Pigs"; // $foo is an integer (15)
如果上述最后兩個例子您看不太明白請參考 字串轉換(String conversion ).
如果你想要某個變數被視為特定的資料型態, 您可以參考 Type casting. 如果您想改變變數的資料型態, 請參考 settype()這個函式.
PHP 會自動指定變數的型態,並將它們轉換成合適的型態. 但有時我們需要確認某變數的資料型態時, 這時就得靠 gettype() , is_long(), is_double(), is_string(), is_array(), is_object() 等這幾個函式.
PHP 指定資料型態的方式和 C 相類似. 只要將變數的資料型態寫在 變數名稱前面, 並用一個括號括起來即可.
$foo = 10; // $foo is an integer $bar = (double) $foo; // $bar is a double
合法指定資料型態的方法 :
(int), (integer) - 指定為整數(integer)
(real), (double), (float) - 指定為雙倍精準數值(double)
(string) - 指定為字串(string)
(array) - 指定為陣列(array)
(object) - 指定為物件(object)
字串轉換成數字的規則如下 :
如果字串里有'.', 'e', 或 'E',則該字串會被轉成雙倍精準整數(double). 其它的則會被視為整數(integer).
該字串的"數值"是由原來字串里的部份"字串"決定.如果 該字串的開端為一數字, 則這數字將會成為該值, 不則它的真會被視 為零(0).
$foo = 1 + "10.5"; // $foo is a double (11.5)
$foo = 1 + "-1.3e3"; // $foo is a double (-1299)
$foo = 1 + "bob-1.3e3"; // $foo is an integer (1)
$foo = 1 + "bob3"; // $foo is an integer (1)
$foo = 1 + "10 Small Pigs"; // $foo is an integer (11)
$foo = 1 + "10 Little Piggies"; // $foo is an integer (11);
// the string contains 'e'
想得知更詳細的資料, 可以在Unix手冊參考 strtod(3).