最小整數。在上PHP 7(64位的Ubuntu)交互模式下,在PHP 7
php > echo true;
1
php > echo false; # no output for false
php > echo PHP_INT_MIN == -9223372036854775808;
1
php > echo is_int(PHP_INT_MIN);
1
php > echo is_int(-9223372036854775808);
爲什麼不是最後一行輸出1?
最小整數。在上PHP 7(64位的Ubuntu)交互模式下,在PHP 7
php > echo true;
1
php > echo false; # no output for false
php > echo PHP_INT_MIN == -9223372036854775808;
1
php > echo is_int(PHP_INT_MIN);
1
php > echo is_int(-9223372036854775808);
爲什麼不是最後一行輸出1?
var_dump()
是你的朋友。
var_dump(
PHP_INT_MIN,
is_int(PHP_INT_MIN),
-9223372036854775808,
is_int(-9223372036854775808)
);
/* Output:
int(-9223372036854775808)
bool(true)
float(-9.2233720368548E+18)
bool(false)
*/
首先PHP系統字小解析,因爲一個整數溢出你的整數值爲float。然後它使用is_int()來確定PHP解析的是否爲integer。請參閱64位系統的示例3。
請注意,is_int()不與無符號整數正常工作。 使用32位PHP 7:
echo PHP_INT_MIN; // -2147483648
echo var_dump(is_int(-2147483648)); // bool(false)
echo var_dump(is_int(-2147483647)); // bool(true)
爲了確保PHP_INT_MIN是關閉的一個,請儘量將你的64位PHP 7:
echo var_dump(is_int(-9223372036854775807)); // bool(true)?
如果您需要更多的整數的精度,可以使用GMP extension。
添加一些更多的信息 –
好回聲PHP_INT_MIN === -9223372036854775808;是錯誤的。儘管如此,回聲PHP_INT_MIN;顯示-9223372036854775808和echo is_int(-9223372036854775808);是假 – zuggy
對不起,我不知道爲什麼被PHP_INT_MIN顯示的值不會出現與is_int檢查() – zuggy