json_encode Strings vs. Numbers
Apabila menggunakan fungsi json_encode PHP, anda mungkin menghadapi masalah apabila nombor dikodkan sebagai rentetan. Ini boleh membawa kepada tingkah laku yang tidak dijangka apabila bekerja dengan JavaScript, kerana rentetan tidak boleh digunakan untuk operasi berangka.
Memahami Isu
Sebagai contoh, jika anda mempunyai tatasusunan seperti ini:
array('id' => 3)
json_encode akan mengeluarkan JSON berikut rentetan:
"{ ["id": "3", ...)
Perhatikan bahawa sifat id dibalut dengan petikan, menunjukkan nilai rentetan. Apabila JavaScript menemui rentetan ini, ia mentafsirkannya sedemikian dan sebarang pengiraan berangka yang dilakukan padanya akan gagal.
Mencegah Pengekodan Rentetan
Untuk menangani isu ini, anda boleh menggunakan bendera JSON_NUMERIC_CHECK apabila memanggil json_encode. Bendera ini mengarahkan PHP untuk menukar nombor secara automatik kepada nilai berangka sebelum pengekodan.
$arr = array( 'row_id' => 1, 'name' => 'George' ); echo json_encode( $arr, JSON_NUMERIC_CHECK );
Ini akan mengeluarkan:
{"row_id":1,"name":"George"}
Dengan bendera JSON_NUMERIC_CHECK, sifat row_id kini ialah nombor tulen, membolehkan anda melakukan operasi berangka padanya dalam JavaScript tanpa sebarang isu.
Atas ialah kandungan terperinci Mengapakah `json_encode` Kadangkala Mengembalikan Nombor sebagai Rentetan, dan Bagaimana Saya Boleh Menghalang Ini?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!