Rumah  >  Artikel  >  pembangunan bahagian belakang  >  php melebihi julat membentuk

php melebihi julat membentuk

王林
王林asal
2023-05-06 13:58:08907semak imbas

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:

  1. Operasi nombor berada di luar julat. Apabila menambah dua integer, jika jumlahnya melebihi nilai maksimum jenis integer, masalah di luar julat akan terhasil.
  2. Masalah limpahan integer. Satu lagi sebab biasa untuk melebihi julat jenis integer ialah nilai pembolehubah itu sendiri melebihi nilai maksimum jenis integer Ini dipanggil limpahan integer.
  3. Apabila membaca data daripada sistem atau antara muka lain, jenis data tidak konsisten.

Untuk lebih memahami masalah PHP yang melebihi julat integer, kita boleh menggambarkannya melalui contoh berikut.

  1. Operasi nombor di luar julat

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.

  1. Limpahan integer

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.

  1. Jenis data tidak konsisten

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.

Mengenai cara menyelesaikan masalah PHP yang melebihi julat integer, terdapat penyelesaian berikut:

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:
  1. $x = "12345678901234567890";
  2. $y = "9876543210987654321";
a$>echo gmp_strval($sum); // Outputnya ialah: 2222222211222222211


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.

    Dalam pembangunan PHP, melebihi julat integer merupakan masalah yang tidak boleh diabaikan perhatian khusus perlu diberikan semasa menulis kod dan semakan kod untuk mengelakkan masalah seperti itu berlaku.

Atas ialah kandungan terperinci php melebihi julat membentuk. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn