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!