PHP 在變數定義中不需要(或不支援)明確的類型定義;變數類型是根據使用該變數的上下文所決定的。也就是說,如果把字串值賦給變數 $var,$var 就成了字串。如果又把一個整數值賦給 $var,那它就成了一個整數。
PHP 的自動型別轉換的一個例子是加法運算子「+」。如果任何一個操作數是浮點數,則所有的操作數都被當成浮點數,結果也是浮點數。否則操作數會被解釋為整數,結果也是整數。注意這並沒有改變這些運算元本身的型別;改變的只是這些運算元如何被求值以及表達式本身的型別。
<?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) ?>
如果想要測試本節中任何例子的話,可以用 var_dump() 函數。
Note:
自動轉換為 陣列 的行為目前沒有定義。
此外,由於PHP 支援使用和陣列下標相同的語法存取字串下標,以下範例在所有PHP 版本中都有效:
$a = 'car'; //$a is string
$a[0] = 'b'; // $a is still a string
echo $a; // :在要轉換的變數之前加上用括號括起來的目標類型。
<?php $foo = 10; // $foo is an integer $bar = (boolean) $foo; // $bar is a boolean ?>
$foo = ( int ) $bar;
> 將字串文字和變數轉換為二元字串:
$binary = (binary)$string;
$binary = b"binary string";
$binary = b"binary string";變數放置在雙引號中的方式來代替將變數轉換成字串:
<?php $foo = 10; // $foo 是一个整数 $str = "$foo"; // $str 是一个字符串 $fst = (string) $foo; // $fst 也是一个字符串// 输出 "they are the same" if ($fst === $str) { echo "they are the same"; } ?>
有時在類型之間強制轉換時確切地會發生什麼可能不是很明顯。更多資訊請見如下:
轉換為布林型
轉換為整數
轉換為浮點型