Maison > développement back-end > tutoriel php > Comment implémenter la fonction récursive personnalisée PHP pour convertir un tableau en JSON

Comment implémenter la fonction récursive personnalisée PHP pour convertir un tableau en JSON

不言
Libérer: 2023-04-03 10:20:01
original
1513 Les gens l'ont consulté

Cet article vous explique comment utiliser la fonction récursive personnalisée de PHP pour convertir des tableaux en JSON. Le contenu est très bon. Les amis dans le besoin peuvent s'y référer.

L'exemple de cet article décrit la fonction récursive personnalisée PHP pour implémenter le tableau en fonction JSON. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Question :

En raison de la nécessité de fournir des interfaces avec d'autres entreprises dans un projet récent, nourrissez-les avec des données json codées en GBK, mais un problème est que la fonction de cryptage json_encode en PHP ne prend en charge que l'encodage utf-8, ce qui est embarrassant. Nos données sont codées en GBK, et le format de données requis par le récepteur est également codé en GBK. Au début, nous avons pensé à convertir les données en codage utf-8, puis à utiliser la fonction json_encode. tronqué. La méthode finale utilisée consistait donc à chiffrer manuellement les données.

Mise en œuvre :

Pour réaliser cette fonction, le plus important est d'observer les caractéristiques des données json Au début, le LZ. le résumé n'était pas en place et il n'a pas pu l'être complètement Pour implémenter la fonction de json_encode, je me référerai plus tard aux informations sur Internet pour implémenter cette fonction (c'est une fonction récursive) :

function newArrayToJson($array)
{
  if(!is_array($array))
  {
    return '';
  }
  $func = __FUNCTION__;
  //关键判断是不是关联数组,以此来决定是否需要json加密key和使用[]
  $associative = (array_keys($array) !== range(0, count($array) - 1)) ? true : false;
  if($associative && !empty($array))
  {
    $construct = array();
    foreach($array as $key => $value)
    {
      $key = '"'.$key.'"';
      if(is_array($value))
      {
        $value = $func($value);
      }
      elseif(!is_numeric($value))
      {
        $value = '"'.$value.'"';
      }
      $construct[] = "$key:$value";
    }
    $result = "{".implode(",",$construct)."}";
  }
  else
  {
    $construct = array();
    foreach($array as $value)
    {
      if(is_array($value))
      {
        $value = $func($value);
      }
      else if(!is_numeric($value))
      {
        $value = '"'.$value.'"';
      }
      $construct[] = $value;
    }
    $result = "[".implode(",", $construct)."]";
  }
  return $result;
}
Copier après la connexion

//测试:
$arr=array('1'=>'www.jb51.net','2'=>'www.baidu.com','3'=>'www.sina.com.cn','4'=>'脚本之家');
echo newArrayToJson($arr);
/*
运行结果:
{"1":"www.jb51.net","2":"www.baidu.com","3":"www.sina.com.cn","4":"脚本之家"}
*/
Copier après la connexion

Recommandations associées :

Introduction et utilisation de 10 fonctions de chaîne courantes dans PHP

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!

Étiquettes associées:
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