Rumah > pembangunan bahagian belakang > tutorial php > Tatasusunan PHP kepada Penukaran JSON: Soalan Lazim

Tatasusunan PHP kepada Penukaran JSON: Soalan Lazim

WBOY
Lepaskan: 2024-05-03 08:12:02
asal
1041 orang telah melayarinya

Dalam PHP, anda boleh menukar antara tatasusunan dan JSON dengan mengikuti langkah berikut: Tukar tatasusunan kepada JSON: Gunakan fungsi json_encode(). Tukar JSON kepada tatasusunan: Gunakan fungsi json_decode(), menentukan hujah yang benar untuk mengembalikan tatasusunan. Mengendalikan aksara khas: json_encode() akan melarikan diri secara automatik daripada aksara khas, tetapi anda masih perlu memberi perhatian selepas melarikan diri secara manual. Mengendalikan aksara Unikod: Gunakan bendera JSON_UNESCAPED_UNICODE untuk mendayakan Unicode melarikan diri. Mengendalikan rujukan pekeliling: Mendayakan bendera JSON_PARTIAL_OUTPUT_ON_ERROR membolehkan output JSON separa dikembalikan apabila rujukan bulat ditemui.

PHP 数组与 JSON 转换:常见问题解答

Penukaran Tatasusunan PHP ke JSON: FAQ

Dalam PHP, tatasusunan dan JSON (Notasi Objek JavaScript) ialah dua struktur data biasa yang digunakan secara meluas untuk menyimpan dan memindahkan data. Dalam artikel ini, kami akan meneroka isu kompleks biasa apabila menukar antara tatasusunan dan JSON dan menyediakan contoh kod untuk menggambarkan penyelesaian.

Soalan 1: Tukar Array kepada JSON

Kod:

$array = ['name' => 'John Doe', 'age' => 30];
$json = json_encode($array);
Salin selepas log masuk

Soalan 2: Tukar JSON kepada Array

Kod:

Kod semula:

>benar< Jika Parameter /code> ditinggalkan, json_decode akan mengembalikan objek dan bukannya tatasusunan. true 参数省略,则 json_decode 将返回一个对象,而不是数组。

问题 3:处理特殊字符

PHP 中的特殊字符(如引号、反斜杠)在 JSON 中需要进行转义。json_encode 函数自动执行此转换,但如果在转换前对数组手动进行转义则需要注意。

代码:

$json = '{"name": "John Doe", "age": 30}';
$array = json_decode($json, true);
Salin selepas log masuk

问题 4:处理 Unicode 字符

Unicode 字符在 JSON 中需要使用十六进制转义序列表示。json_encode 函数默认不会执行此转换。要启用 Unicode 转义,请使用 JSON_UNESCAPED_UNICODE 标志。

代码:

$array = ['name' => 'John"Doe'];
$json = json_encode($array);  // 结果:{"name": "John\"Doe"}
Salin selepas log masuk

问题 5:处理循环引用

嵌套数据结构中的循环引用会导致 JSON 转换失败。要解决此问题,可以启用 JSON_PARTIAL_OUTPUT_ON_ERROR 标志,使 json_encodeSoalan 3: Mengendalikan aksara khas

Watak khas (seperti petikan, garis miring ke belakang) dalam PHP perlu dilepaskan dalam JSON. Fungsi json_encode melakukan penukaran ini secara automatik, tetapi anda perlu berhati-hati jika anda melarikan diri secara manual daripada tatasusunan sebelum penukaran.

Kod:

$array = ['name' => '王小明'];
$json = json_encode($array, JSON_UNESCAPED_UNICODE);  // 结果:{"name": "\u738b\u5c0f\u660e"}
Salin selepas log masuk

Soalan 4: Mengendalikan aksara Unikod

🎜🎜Aksara Unikod perlu diwakili dalam JSON menggunakan urutan pelarian heksadesimal. Fungsi json_encode tidak melakukan penukaran ini secara lalai. Untuk mendayakan Unicode melarikan diri, gunakan bendera JSON_UNESCAPED_UNICODE. 🎜🎜🎜Kod: 🎜🎜
$array = ['name' => 'John Doe'];
$array['self'] = &$array;
$json = json_encode($array, JSON_PARTIAL_OUTPUT_ON_ERROR);  // 仅输出部分 JSON 数据
Salin selepas log masuk
🎜🎜 Isu 5: Mengendalikan rujukan bulat 🎜🎜🎜Rujukan bulatan dalam struktur data bersarang boleh menyebabkan penukaran JSON gagal. Untuk menyelesaikan isu ini, anda boleh mendayakan bendera JSON_PARTIAL_OUTPUT_ON_ERROR supaya json_encode mengembalikan sebahagian output JSON apabila rujukan bulat ditemui. 🎜🎜🎜Kod:🎜🎜
<?php
$user = ['name' => 'John Doe', 'age' => 30, 'address' => '123 Main Street'];
$json = json_encode($user);
?>

<html>
<head><title>用户信息</title></head>
<body>
<h1><?php echo $user['name']; ?></h1>
<p>年龄:<?php echo $user['age']; ?></p>
<p>地址:<?php echo $user['address']; ?></p>
</body>
</html>
Salin selepas log masuk
🎜🎜Kes praktikal🎜🎜🎜Berikut ialah kes praktikal untuk menukar maklumat pengguna daripada tatasusunan PHP kepada JSON dan memaparkannya dalam halaman HTML:🎜rrreee

Atas ialah kandungan terperinci Tatasusunan PHP kepada Penukaran JSON: Soalan Lazim. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan