PHP 在變數定義中不需要(或不支援)明確的類型定義;變數類型是根據使用該變數的上下文所決定的。也就是說,如果把一個 string 值賦給變數 $var , $var 就成了一個 string 。如果再把一個 integer 賦給 $var ,那麼它就變成了一個 integer 。
PHP 的自動類型轉換的一個例子是加法運算子“+”。如果任何一個運算元是 float ,則所有的運算元都被當成 float ,結果也是 float 。否則運算元會解釋為 integer ,結果也是 integer 。注意這並沒有改變這些運算元本身的型別;改變的只是這些運算元如何被求值以及表達式本身的型別。
<?php $foo = "0" ; // $foo 是字符串 (ASCII 48) $foo += 2 ; // $foo 现在是一个整数 (2) $foo = $foo + 1.3 ; // $foo 现在是一个浮点数 (3.3) $foo = 5 + "10 Little Piggies" ; // $foo 是整数 (15) $foo = 5 + "10 Small Pigs" ; // $foo 是整数 (15) ?>
如果上面兩個例子看起來古怪的話,請參考字串轉換為數值。
如果要強制將一個變數當作某種型別來求值,請參考型別強制轉換一節。如果要改變一個變數的類型,請參閱 settype() 。
如果想要測試本節中任何範例的話,可以用 var_dump() 函數。
Note:
自動轉換為 陣列 的行為目前沒有定義。
此外,由於PHP 支援使用和數組下標相同的語法存取字串下標,以下例子在所有PHP 版本中都有效:
<?php $a = 'car' ; // $a is a string $a [ 0 ] = 'b' ; // $a is still a string echo $a ; // bar ?>
類型強制轉換
PHP 中的型別強制轉換和C 中的非常像:在要轉換的變數之前加上用括號括起來的目標型別。
<?php $foo = 10 ; // $foo is an integer $bar = (boolean) $foo ; // $bar is a boolean ?>
允許的強制轉換有:
(int), (integer) - 轉換為整形 integer
( bool), (boolean) - 轉換為布林類型 boolean
#(float), (double), (real) - 轉換為浮點型 float
(string) - 轉換為字串 string
#(array) - 轉換為陣列 array
#(object) - 轉換為物件 object
(unset) - 轉換為 NULL (PHP 5)
#(binary) 轉換與b前綴轉換支援為PHP 5.2.1 新增。
注意在括號內允許有空格和製表符,所以下面兩個例子功能相同:
<?php $foo = (int) $bar ; $foo = ( int ) $bar ; ?>
將字串文字和變數轉換為二進位字串:
<?php $binary = (binary) $string ; $binary = b"binary string" ; ?>
Note:
可以將變數放置在雙引號中的方式來取代將變數轉換成字串:
<?php $foo = 10 ; // $foo 是一个整数 $str = " $foo " ; // $str 是一个字符串 $fst = (string) $foo ; // $fst 也是一个字符串 // 输出 "they are the same" if ( $fst === $str ) { echo "they are the same" ; } ?>
以上是php 資料型別轉換的判別的詳細內容。更多資訊請關注PHP中文網其他相關文章!