Rumah >pembangunan bahagian belakang >tutorial php >Mengapakah `json_encode` PHP Menukar Nombor kepada Rentetan dan Bagaimana Saya Boleh Membetulkannya?

Mengapakah `json_encode` PHP Menukar Nombor kepada Rentetan dan Bagaimana Saya Boleh Membetulkannya?

Susan Sarandon
Susan Sarandonasal
2024-11-30 19:12:15486semak imbas

Why Does PHP's `json_encode` Convert Numbers to Strings, and How Can I Fix It?

Isu Pengekodan JSON: PHP json_encode Menukar Nombor kepada Rentetan

Fungsi json_encode dalam PHP dihadapi dengan isu di mana nilai berangka dikodkan sebagai rentetan semasa proses pengekodan JSON. Ini mengakibatkan JavaScript, apabila menemui rentetan yang dikodkan ini, mentafsirkannya sedemikian, yang membawa kepada ralat dalam operasi berangka. Contohnya:

array('id' => 3)

Mengekodkan kepada:

{ ["id": "3", ...)

Apabila JavaScript mengakses sifat "id" ini, ia ditafsirkan sebagai rentetan, menyebabkan kegagalan dalam pengiraan berangka.

Penyelesaian: Cegah Pengekodan Rentetan

Untuk mengelakkan json_encode daripada menukar nombor kepada rentetan, penyelesaian wujud dalam PHP versi 5.3.3 dan kemudian:

$arr = array( 'row_id' => '1', 'name' => 'George' );
echo json_encode( $arr, JSON_NUMERIC_CHECK ); 

Dengan menyatakan bendera JSON_NUMERIC_CHECK, nombor akan ditukar secara automatik kepada jenis angka semasa proses pengekodan JSON:

{"row_id":1,"name":"George"}

Ini memastikan JavaScript dapat mengenal pasti dan memanipulasi nilai dengan betul sebagai nombor.

Atas ialah kandungan terperinci Mengapakah `json_encode` PHP Menukar Nombor kepada Rentetan dan Bagaimana Saya Boleh Membetulkannya?. 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