Position actuelle: Accueil> Derniers articles> La fonction récursive personnalisée PHP implémente le tableau à la fonction JSON (prend en charge le codage GBK)

La fonction récursive personnalisée PHP implémente le tableau à la fonction JSON (prend en charge le codage GBK)

gitbox 2025-07-28

introduire

Dans le développement de PHP, nous devons souvent convertir les tableaux en chaînes au format JSON pour permettre l'interaction des données ou le stockage des données sur le frontal. PHP a une fonction JSON_ENCOCODE intégrée, qui peut convertir les tableaux au format JSON, mais ne prend en charge que l'encodage UTF-8 par défaut. Afin de prendre en charge d'autres encodages (tels que GBK), nous devons personnaliser les fonctions récursives pour implémenter la fonction du tableau vers JSON.

Préparation

Exigences de version PHP

Assurez-vous que la version PHP est supérieure à 5.4, car PHP démarre avec la version 5.4, la fonction JSON_ENCODODE offre les deuxième options de paramètre $ pour faciliter la configuration de plus de fonctions.

Installer une extension MBSTring

Afin de prendre en charge le codage GBK, l'extension MBSTRING doit être installée. Cette extension fournit des capacités de traitement pour les chaînes multi-octets. Vous pouvez utiliser la commande suivante pour installer:

 sudo apt-get update
sudo apt-get install php-mbstring

Fonctions récursives personnalisées

Ensuite, nous rédigerons une fonction récursive personnalisée pour implémenter la fonction Array vers JSON. Ce qui suit est la mise en œuvre de la fonction:

 /**
 * Transformation du tableauJSONChaîne de format(soutienGBKcodage)
 * @param array $array Tableau à convertir
 * @return string JSONChaîne de format
 */
function json_encode_gbk($array) {
    $array = array_map('urlencode_gbk', $array);
    $json = json_encode($array);
    return urldecode_gbk($json);
}

/**
 * Effectuer une chaîneGBKcodage
 * @param string $str 待codage的字符串
 * @return string codage后的字符串
 */
function urlencode_gbk($str) {
    return urlencode(mb_convert_encoding($str, 'GBK', 'UTF-8'));
}

/**
 * Effectuer une chaîneGBKdécodage
 * @param string $str 待décodage的字符串
 * @return string décodage后的字符串
 */
function urldecode_gbk($str) {
    return mb_convert_encoding(urldecode($str), 'UTF-8', 'GBK');
}

Dans le code ci-dessus, la fonction JSON_ENCODE_GBK effectue d'abord un traitement URLencode_GBK sur chaque élément du tableau via array_map, puis utilise la fonction json_encode pour convertir le tableau en une chaîne au format JSON. Enfin, la fonction URLDECODE_GBK le convertit du format GBK au UTF-8.

Exemple d'utilisation

Supposons que nous ayons un tableau contenant du chinois:

 $array = array(
    'Nom' => 'Zhang San',
    'âge' => 25,
    'genre' => 'mâle'
);

Nous pouvons convertir le tableau au format JSON en appelant la fonction JSON_ENCODE_GBK:

 $json = json_encode_gbk($array);
echo $json;

Le résultat de la sortie est:

 {
    "Nom": "Zhang San",
    "âge": 25,
    "genre": "mâle"
}

Comme indiqué ci-dessus, les caractères chinois ont été convertis avec succès en codage Unicode.

Résumer

Grâce à des fonctions récursives personnalisées, nous avons réussi à implémenter la fonction du tableau vers JSON et pris en charge le codage GBK. Dans le développement réel, si vous devez convertir les tableaux au format JSON et prendre en charge d'autres encodages, vous pouvez utiliser une méthode similaire pour l'étendre.

L'idée principale des fonctions récursives personnalisées consiste à coder la chaîne dans le tableau avant la conversion, puis à la décoder après la conversion. Cela garantit que la chaîne est convertie correctement entre différents encodages.

J'espère que cet article peut vous aider à comprendre comment implémenter le tableau à la fonction JSON dans PHP.