PHP 8 內建 8 種原始型別:
int、float、bool、stringarray、objectresource、null變數型別由賦值決定,無需宣告。
<?php
$a = 1234; // 十進制
$a = -123; // 負數
$a = 0123; // 八進制(前綴 0)= 83
$a = 0x1A; // 十六進制(前綴 0x)= 26
$a = 0b1010; // 二進制(PHP 5.4+,前綴 0b)= 10
?>
PHP_INT_MAX、PHP_INT_SIZE 取得限制PHP 無整除運算子,1/2 = 0.5。取整方法:
<?php
echo (int) (5/2); // 2
echo 5 >> 1; // 2(位移)
echo intdiv(5, 2); // 2(PHP 7+ 推薦)
?>
<?php
$f = 1.234;
$f = 1.2e3; // 1200
$f = 7E-10; // 0.0000000007
?>
<?php
echo 0.1 + 0.7; // 0.79999999999999
echo floor((0.1+0.7)*10); // 7 ≠ 8
// 正確比較
function floatEquals($a, $b, $epsilon = 1e-10) {
return abs($a - $b) < $epsilon;
}
// 或使用 BCMath 高精度
echo bcadd('0.1', '0.7', 1); // 0.8
?>
最簡單型別,僅 true/false(大小寫不敏感)。
false、0、0.0、""、"0"[]、null所有其他值(含資源)皆為 true。
<?php
$v = 42;
var_dump(gettype($v)); // "integer"(注意:float 回傳 "double")
var_dump(get_debug_type($v)); // "int"(PHP 8+ 推薦,更符合型別宣告)
// 邏輯判斷用 is_* 系列
if (is_int($v)) { /* ... */ }
if (is_float($v)) { /* ... */ }
if (is_bool($v)) { /* ... */ }
?>
BCMath/GMP 擴展function add(int $a, int $b): int 讓引擎自動強制轉型declare(strict_types=1); 禁止隱性轉換