Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie eine benutzerdefinierte PHP-rekursive Funktion zum Konvertieren eines Arrays in JSON

So implementieren Sie eine benutzerdefinierte PHP-rekursive Funktion zum Konvertieren eines Arrays in JSON

不言
不言Original
2018-07-21 12:55:151413Durchsuche

In diesem Artikel erfahren Sie, wie Sie die benutzerdefinierte rekursive Funktion von PHP verwenden, um Arrays in JSON zu konvertieren. Ich hoffe, dass er allen helfen kann.

Das Beispiel in diesem Artikel beschreibt die benutzerdefinierte rekursive PHP-Funktion zur Implementierung der Array-zu-JSON-Funktion. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Frage:

Aufgrund der Notwendigkeit, Schnittstellen zu anderen Unternehmen bereitzustellen In einem kürzlich durchgeführten Projekt habe ich ihnen GBK-codierte JSON-Daten zugeführt, aber ein Problem besteht darin, dass die json_encode-Verschlüsselungsfunktion in PHP nur die UTF-8-Codierung unterstützt, was peinlich ist. Unsere Daten sind GBK-codiert, und das vom Empfänger benötigte Datenformat ist ebenfalls GBK-codiert. Zuerst dachten wir daran, die Daten in UTF-8-Codierung zu konvertieren und dann die Funktion json_encode zu verwenden verstümmelt, daher bestand die letzte Methode darin, die Daten manuell zu verschlüsseln.

Implementierung:

Um diese Funktion zu realisieren, ist es am wichtigsten, die Eigenschaften von JSON-Daten zu beobachten Zusammenfassung war nicht vorhanden und konnte nicht vollständig sein. Um die Funktion der Funktion json_encode zu implementieren, lesen Sie später die Informationen im Internet, um diese Funktion zu implementieren (es handelt sich um eine rekursive Funktion):

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;
}

//测试:
$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":"脚本之家"}
*/

Verwandte Empfehlungen:

Einführung in 10 gängige String-Funktionen in PHP und deren Verwendung

Das obige ist der detaillierte Inhalt vonSo implementieren Sie eine benutzerdefinierte PHP-rekursive Funktion zum Konvertieren eines Arrays in JSON. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn