Maison  >  Article  >  développement back-end  >  Comment écrire une méthode pour convertir un tableau en JSON en php

Comment écrire une méthode pour convertir un tableau en JSON en php

PHPz
PHPzoriginal
2023-04-19 10:08:13428parcourir

En programmation PHP, le tableau est une structure de données importante. JSON est également un format de données populaire et largement utilisé dans diverses applications Web. En PHP, nous avons souvent besoin de convertir des tableaux au format JSON pour faciliter la transmission et le stockage. PHP fournit la méthode json_encode() pour convertir un tableau en chaîne JSON. Cependant, nous devrons parfois écrire nous-mêmes une méthode tableau vers JSON pour mieux contrôler le format et la logique de sortie. Voici un exemple d'implémentation de méthode :

/**
 * 将数组转换成JSON字符串
 * @param array $data 待转换的数组
 * @param int $indent 缩进量
 * @param int $level 当前层级
 * @return string 转换后的JSON字符串
 */
function arrayToJson($data, $indent = 0, $level = 0)
{
    $result = "";
    $space = str_repeat(" ", $indent);
    $isAssoc = is_assoc($data);

    if ($isAssoc) {
        $result .= "{\n";
    } else {
        $result .= "[\n";
    }

    foreach ($data as $key => $value) {
        if ($isAssoc) {
            $result .= $space . json_encode($key) . ": ";
        }

        if (is_array($value)) {
            $result .= arrayToJson($value, $indent + 4, $level + 1);
        } else if (is_bool($value)) {
            $result .= json_encode($value ? "true" : "false");
        } else if (is_null($value)) {
            $result .= "null";
        } else if (is_numeric($value)) {
            $result .= json_encode($value);
        } else {
            $result .= json_encode($value, JSON_UNESCAPED_UNICODE);
        }

        if (next($data)) {
            $result .= ",";
        }

        $result .= "\n";
    }

    $result .= str_repeat(" ", $level * 4);

    if ($isAssoc) {
        $result .= "}";
    } else {
        $result .= "]";
    }

    return $result;
}

/**
 * 判断一个数组是否是关联数组
 * @param array $data 待判断的数组
 * @return bool
 */
function is_assoc($data)
{
    if (!is_array($data)) {
        return false;
    }

    $keys = array_keys($data);
    $len = count($keys);

    for ($i = 0; $i < $len; $i++) {
        if ($keys[$i] !== $i) {
            return true;
        }
    }

    return false;
}

Cette méthode accepte un tableau comme paramètre, ainsi qu'un paramètre "indentation" et un paramètre "niveau actuel", ces deux paramètres sont utilisés pour formater la sortie. Parmi elles, la méthode is_assoc() est utilisée pour déterminer si un tableau est un tableau associatif. Si tel est le cas, nous devons afficher à la fois les clés et les valeurs des éléments du tableau lors de la sortie. Quant au type de valeur, nous adoptons différentes méthodes d'encodage :

  • S'il s'agit d'un sous-tableau, la méthode arrayToJson() est appelée de manière récursive pour un traitement ultérieur.
  • S'il s'agit d'un type booléen, convertissez-le en chaîne "true" ou "false" pour la sortie.
  • S'il est nul, affichez directement "null".
  • S'il s'agit d'un nombre, utilisez la fonction json_encode() pour l'encoder et le sortir.
  • S'il s'agit d'autres types, utilisez également la fonction json_encode(), mais transmettez un paramètre d'option JSON_UNESCAPED_UNICODE pour conserver le code Unicode d'origine des caractères non-ASCII.

De plus, nous devons afficher une virgule à la fin de chaque enfant pour prendre en charge la sérialisation de plusieurs éléments impliqués. Enfin, nous générons le « symbole de fin » correspondant en fonction du type du tableau et renvoyons la chaîne JSON formatée.

En utilisant le code ci-dessus, nous pouvons convertir un tableau PHP en une chaîne JSON, comme indiqué ci-dessous :

$data = array(
    &#39;name&#39; => 'John',
    'age' => 28,
    'married' => true,
    'hobbies' => array('basketball', 'music', 'reading'),
    'address' => array(
        'city' => 'Beijing',
        'country' => 'China'
    ),
    'friends' => array(
        array('name' => 'Tom', 'age' => 27),
        array('name' => 'Jane', 'age' => 26)
    )
);

echo arrayToJson($data);

Le résultat est le suivant :

{
    "name": "John",
    "age": 28,
    "married": true,
    "hobbies": [
        "basketball",
        "music",
        "reading"
    ],
    "address": {
        "city": "Beijing",
        "country": "China"
    },
    "friends": [
        {
            "name": "Tom",
            "age": 27
        },
        {
            "name": "Jane",
            "age": 26
        }
    ]
}

Dans le développement réel, nous devrons peut-être générer une chaîne JSON en fonction de spécifications spécifiques. exigences de format. À ce stade, la méthode tableau personnalisé vers JSON devient très utile.

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