整型

PHP 中的整數可以在基數 2(二進位制),基數 8(八進位制),基數 10(十進位制)或基數 16(十六進位制)中本機指定。

$my_decimal = 42;
$my_binary = 0b101010;
$my_octal = 052;
$my_hexadecimal = 0x2a;

echo ($my_binary + $my_octal) / 2;
// Output is always in decimal: 42

整數長度為 32 或 64 位,具體取決於平臺。常量 PHP_INT_SIZE 以位元組為單位儲存整數大小。PHP_INT_MAX 和(自 PHP 7.0 起)PHP_INT_MIN 也可用。

printf("Integers are %d bits long" . PHP_EOL, PHP_INT_SIZE * 8);
printf("They go up to %d" . PHP_EOL, PHP_INT_MAX);

根據需要從浮點數,布林值和字串自動建立整數值。如果需要顯式型別轉換,可以使用 (int)(integer) 強制轉換:

$my_numeric_string = "123";
var_dump($my_numeric_string);
// Output: string(3) "123"
$my_integer = (int)$my_numeric_string;
var_dump($my_integer);
// Output: int(123)

整數溢位將通過轉換為 float 來處理:

$too_big_integer = PHP_INT_MAX + 7;
var_dump($too_big_integer);
// Output: float(9.2233720368548E+18)

PHP 中沒有整數除法運算子,但它可以使用隱式轉換進行模擬,隱式轉換總是通過丟棄浮點部分來舍入。從 PHP 版本 7 開始,新增了整數除法函式。

$not_an_integer = 25 / 4;
var_dump($not_an_integer);
// Output: float(6.25)
var_dump((int) (25 / 4)); // (see note below)
// Output: int(6)
var_dump(intdiv(25 / 4)); // as of PHP7
// Output: int(6)

(請注意,(25 / 4) 周圍的額外括號是必需的,因為 (int) 的優先順序高於分割槽)