Kebanyakan bahasa pengaturcaraan mempunyai had pada jenis pembolehubah yang melebihi had ini akan menyebabkan masalah berjalan atau ralat, dan PHP tidak terkecuali. Dalam PHP, julat pembolehubah integer ialah -2147483648 hingga 2147483647. Apabila julat ini melebihi, masalah melebihi julat integer akan berlaku.
Mungkin terdapat banyak sebab mengapa julat integer melebihi, seperti:
Untuk lebih memahami masalah PHP yang melebihi julat integer, kita boleh menggambarkannya melalui contoh berikut.
Sebagai contoh, mari cuba kira jumlah dua integer supaya hasilnya berada di luar julat integer.
$x = 2147483647;
$y = 2;
gema $x + $y; // Hasil output ialah -2147483647
Disebabkan $x; dan $ Hasil penambahan y melebihi nilai maksimum 2147483647, jadi PHP menganggapnya sebagai nombor negatif dan mengeluarkan hasilnya sebagai -2147483647.
Anda juga boleh menetapkan pembolehubah integer secara manual kepada nilai yang lebih besar daripada 2147483647 untuk menghasilkan semula masalah limpahan integer.
$x = 2147483648;
gema $x; // Hasil keluaran ialah -2147483648
Memandangkan 2147483648 lebih besar daripada nilai integer terbesar 214748, 214748 nombor negatif -2147483648.
Apabila membaca data daripada sistem atau antara muka lain, anda perlu memberi perhatian kepada masalah jenis data yang tidak konsisten.
Sebagai contoh, mari kita dapatkan data berangka daripada fail json.
{"nombor": 12345678901234567890}
$json = file_get_contents("/path/to/json/file.json");
$data = json_decode($json, true ; Jika nilai dalam fail json lebih besar daripada nilai ini, PHP akan menganggapnya sebagai apungan dan bukannya integer.
Gunakan perpustakaan nombor yang besar. Apabila anda perlu melakukan pengiraan di luar julat integer, anda boleh menggunakan perpustakaan nombor besar yang disediakan oleh PHP, seperti gmp atau bcmath.
Contohnya:
Simpan integer dalam pangkalan data dan bukannya menggunakan pembolehubah php. Storan pangkalan data boleh menampung nilai integer yang lebih besar.
Ubah suai fail konfigurasi php. Anda boleh cuba mengubah suai item konfigurasi dalam fail konfigurasi php php.ini, seperti menetapkan penggunaan integer 64-bit.
Atas ialah kandungan terperinci php melebihi julat membentuk. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!