PHP 變數無需宣告類型,由賦值內容決定:
<?php $foo = "0"; // string $foo++; // string "1" (字串遞增) $foo += 1; // int 2 $foo = $foo + 1.3; // float 3.3 $foo = 5 + "10 Little Piggies"; // int 15 $foo = 5 + "10 Small Pigs"; // int 15
+ 算術加法:任一操作數為 float → 雙方提升為 float,結果為 float;否則視為 int. 字串串接:雙方轉為字串== 鬆散比較:型別轉換後比較 (易出錯)=== 嚴格比較:型別與值皆相同<?php $foo = 10; $bar = (int) $foo; // int $bar = (integer) $foo; // 同義 $bar = (bool) $foo; // bool $bar = (float) $foo; // float (同 double, real) $bar = (string) $foo; // string $bar = (array) $foo; // array $bar = (object) $foo; // object (stdClass) $bar = (unset) $foo; // null (PHP 7.2+)
括號內允許空格:( int ) 等同 (int)。
.、e、E → 解析為 float<?php 1 + "10.5" // float 11.5 1 + "-1.3e3" // float -1299 1 + "bob-1.3e3" // int 1 (bob 非數字開頭) 1 + "bob3" // int 1 1 + "10 Small Pigs" // int 11 1 + "10 Little Piggies" // int 11 (含 e 但非指數格式)
<?php gettype($var) // 回傳類型字串 is_int($var) // 別名 is_long, is_integer is_float($var) // 別名 is_double, is_real is_string($var) is_array($var) is_object($var) is_bool($var) is_null($var) is_numeric($var) // 數字或數字字串 is_scalar($var) // int/float/string/bool is_callable($var) is_iterable($var) // PHP 7.1+
resource 為外部資源控制代碼 (檔案、資料庫連線、圖像等),不可直接操作,僅傳遞給對應函數。
=== 嚴格比較function add(int $a, int $b): intdeclare(strict_types=1); 檔案頂部intval()/floatval()/filter_var() 語義明確