La fonction json_encode en PHP convertit une variable PHP en chaîne au format JSON. Le plus courant consiste à convertir un tableau en PHP en une chaîne au format JSON. Cependant, dans certains cas, vous souhaiterez peut-être que la fonction json_encode ne convertisse pas le tableau. Dans cet article, nous explorerons comment atteindre cet objectif.
Tout d'abord, voyons comment la fonction json_encode convertit les tableaux par défaut. Supposons que nous ayons le tableau PHP suivant :
$array = array( "name" => "John", "age" => 30, "hobbies" => array("reading", "swimming", "traveling") );
Lorsque nous passons ce tableau à la fonction json_encode, la fonction retournera la chaîne au format JSON suivante :
{ "name": "John", "age": 30, "hobbies": ["reading", "swimming", "traveling"] }
Comme vous pouvez le voir, la fonction a changé la valeur des "loisirs" clé d'un PHP Le sous-tableau est converti en tableau JSON. Ceci est utile dans la plupart des cas car cela nous fournit un moyen de convertir de manière récursive des données PHP au format JSON couche par couche.
Cependant, dans certains cas, nous souhaitons que la fonction json_encode ne convertisse pas les tableaux mais les conserve comme tableaux PHP d'origine. Il existe un moyen d'y parvenir : utiliser des espaces réservés spéciaux dans le tableau.
Nous pouvons remplacer chaque sous-tableau du tableau par un espace réservé, puis utiliser une fonction de rappel dans la fonction json_encode pour remplacer ces espaces réservés par des sous-tableaux normaux. Voici un exemple :
$array = array( "name" => "John", "age" => 30, "hobbies" => "[[subarray]]" ); function replaceSubarrays($data) { if(is_array($data)) { if(in_array("[[subarray]]", $data)) { $data = array_map("replaceSubarrays", $data); } } elseif ($data == "[[subarray]]") { $data = array(); } return $data; } $json = json_encode(array_map("replaceSubarrays", $array)); echo $json;
Dans cet exemple, nous remplaçons la valeur de la clé "hobbies" par "[[subarray]]", qui est un espace réservé spécial indiquant que la valeur est un sous-tableau. Nous définissons également une fonction de rappel replaceSubarrays pour gérer cet espace réservé. Il parcourt récursivement tous les éléments du tableau, trouve tous les sous-tableaux contenant des espaces réservés et les remplace par des tableaux vides. Nous utilisons ensuite la fonction json_encode et la fonction array_map pour transmettre l'intégralité du tableau à la fonction de rappel et remplacer le sous-tableau.
Lorsque nous exécutons cet exemple, nous obtenons la chaîne suivante au format JSON :
{ "name": "John", "age": 30, "hobbies": "[[subarray]]" }
Comme nous nous y attendions, la valeur de la clé "hobbies" n'est pas convertie en tableau JSON, mais reste comme "[[subarray] ]" chaîne.
Cette approche utilisant des espaces réservés nécessite un travail supplémentaire, mais elle permet à la fonction json_encode de conserver le tableau PHP d'origine, nous permettant ainsi de traiter les données de manière supérieure.
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!