資料型能的小把戲

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() 等這幾個函式.

資料型態的指定(Type casting)

PHP 指定資料型態的方式和 C 相類似. 只要將變數的資料型態寫在 變數名稱前面, 並用一個括號括起來即可.

$foo = 10;   // $foo is an integer
$bar = (double) $foo;   // $bar is a double

合法指定資料型態的方法 :

字串的轉換

字串轉換成數字的規則如下 :

如果字串里有'.', '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).