Maison > développement back-end > Problème PHP > Comment obtenir un tableau php json_encode sans conversion

Comment obtenir un tableau php json_encode sans conversion

PHPz
Libérer: 2023-04-21 09:54:54
original
692 Les gens l'ont consulté

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")
);
Copier après la connexion

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"]
}
Copier après la connexion

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;
Copier après la connexion

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]]"
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal