整型

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) 的优先级高于分区)