Rumah > pembangunan bahagian belakang > tutorial php > Mengapakah `json_encode` Kadangkala Mengembalikan Nombor sebagai Rentetan, dan Bagaimana Saya Boleh Menghalang Ini?

Mengapakah `json_encode` Kadangkala Mengembalikan Nombor sebagai Rentetan, dan Bagaimana Saya Boleh Menghalang Ini?

Linda Hamilton
Lepaskan: 2024-12-03 06:13:16
asal
798 orang telah melayarinya

Why Does `json_encode` Sometimes Return Numbers as Strings, and How Can I Prevent This?

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)
Salin selepas log masuk

json_encode akan mengeluarkan JSON berikut rentetan:

"{ ["id": "3", ...)
Salin selepas log masuk

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 );
Salin selepas log masuk

Ini akan mengeluarkan:

{"row_id":1,"name":"George"}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan