Rumah > Soal Jawab > teks badan
Apabila menggunakan fungsi is_int, PHP mengembalikan palsu apabila nombor yang akan ditentukan melebihi 9 digit Mengapa?
滿天的星座2017-05-16 13:06:03
. . . .
Integer integer mempunyai julat, dan julat ini berbeza daripada julat 32-bit (nilai maksimum: 2^31 - 1) dan 64-bit (nilai maksimum: 2^63 - 1) yang berkaitan dengan versi platform. Pada masa ini, nombor di luar julat akan ditafsirkan sebagai jenis apungan, jadi pertimbangan fungsi is_int() akan menjadi palsu. Berikut ialah limpahan integer 64-bit:
$large_number = 9223372036854775807;
var_dump(is_int($large_number)); // true
$large_number = 9223372036854775808;
var_dump(is_int($large_number)); // false
世界只因有你2017-05-16 13:06:03
Mengikut manual laman web rasmi php:
Panjang perkataan bagi integer bergantung pada platform, walaupun maksimum biasa ialah kira-kira dua bilion (ditandatangani 32-bit). Nilai maksimum pada platform 64-bit biasanya sekitar 9E18, kecuali untuk versi sebelum PHP 7 pada Windows, yang sentiasa 32-bit. PHP tidak menyokong integer tidak ditandatangani. Panjang perkataan bagi nilai Integer boleh diwakili oleh PHP_INT_SIZE pemalar Sejak PHP 4.4.0 dan PHP 5.0.5, nilai maksimum boleh diwakili oleh PHP_INT_MAX pemalar, dan nilai minimum boleh diwakili oleh PHP_INT_MIN pemalar dalam PHP. 7.0.0 dan versi yang lebih baru.
Jadi untuk integer 32-bit, ditandatangani 2^31=2147483648
(kira-kira 2 bilion), ia adalah nombor 10 digit, jadi untuk situasi yang anda nyatakan, adalah benar bahawa lebih daripada 9 digit akan kembali palsu.