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