Maison  >  Article  >  développement back-end  >  Conversion d'un tableau PHP en JSON : FAQ

Conversion d'un tableau PHP en JSON : FAQ

WBOY
WBOYoriginal
2024-05-03 08:12:02982parcourir

En PHP, vous pouvez convertir entre tableaux et JSON en suivant ces étapes : Convertir un tableau en JSON : utilisez la fonction json_encode(). Convertir JSON en tableau : utilisez la fonction json_decode(), en spécifiant le vrai argument pour renvoyer un tableau. Gestion des caractères spéciaux : json_encode() échappera automatiquement les caractères spéciaux, mais vous devez toujours faire attention après un échappement manuel. Gestion des caractères Unicode : utilisez l'indicateur JSON_UNESCAPED_UNICODE pour activer l'échappement Unicode. Gestion des références circulaires : l'activation de l'indicateur JSON_PARTIAL_OUTPUT_ON_ERROR permet de renvoyer une sortie JSON partielle lorsqu'une référence circulaire est rencontrée.

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

Conversion de tableaux PHP en JSON : FAQ

En PHP, les tableaux et JSON (JavaScript Object Notation) sont deux structures de données courantes qui sont largement utilisées pour stocker et transférer des données. Dans cet article, nous explorerons les problèmes complexes courants lors de la conversion entre des tableaux et JSON et fournirons des exemples de code pour illustrer les solutions.

Question 1 : Convertir un tableau en JSON

Code :

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

Question 2 : Convertir un JSON en tableau

Code :

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

Remarque : Si vrai est omis, <code>json_decode renverra un objet au lieu d'un tableau. true 参数省略,则 json_decode 将返回一个对象,而不是数组。

问题 3:处理特殊字符

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

代码:

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

问题 4:处理 Unicode 字符

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

代码:

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

问题 5:处理循环引用

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

Question 3 : Gestion des caractères spéciaux

Les caractères spéciaux (tels que les guillemets, les barres obliques inverses) en PHP doivent être échappés en JSON. La fonction json_encode effectue cette conversion automatiquement, mais vous devez être prudent si vous échappez manuellement le tableau avant la conversion.

Code :

$array = ['name' => 'John Doe'];
$array['self'] = &$array;
$json = json_encode($array, JSON_PARTIAL_OUTPUT_ON_ERROR);  // 仅输出部分 JSON 数据

🎜Question 4 : Gestion des caractères Unicode 🎜🎜🎜Les caractères Unicode doivent être représentés en JSON à l'aide de séquences d'échappement hexadécimales. La fonction json_encode n'effectue pas cette conversion par défaut. Pour activer l'échappement Unicode, utilisez l'indicateur JSON_UNESCAPED_UNICODE. 🎜🎜🎜Code : 🎜🎜
<?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>
🎜🎜 Problème 5 : Gestion des références circulaires 🎜🎜🎜Les références circulaires dans les structures de données imbriquées peuvent entraîner l'échec de la conversion JSON. Pour résoudre ce problème, vous pouvez activer l'indicateur JSON_PARTIAL_OUTPUT_ON_ERROR afin que json_encode renvoie une sortie JSON partielle lorsqu'une référence circulaire est rencontrée. 🎜🎜🎜Code :🎜🎜rrreee🎜🎜Cas pratique🎜🎜🎜Ce qui suit est un cas pratique de conversion des informations utilisateur d'un tableau PHP en JSON et de leur affichage dans une page HTML :🎜rrreee

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn