Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erklärung der PHP-Funktion json_encode()

Detaillierte Erklärung der PHP-Funktion json_encode()

墨辰丷
墨辰丷Original
2018-06-06 11:58:064244Durchsuche

In diesem Artikel wird hauptsächlich die detaillierte Erklärung der PHP-Funktion json_encode() vorgestellt. Ich hoffe, dass sie für alle hilfreich ist.

Die Verwendung der in PHP integrierten Funktion json_encode() (PHP > 5.2) kann verwendet werden, damit die Daten in PHP übertragen und gut mit anderen Sprachen verwendet werden können.

Die Funktion dieser Funktion besteht darin, numerische Werte in das JSON-Datenspeicherformat zu konvertieren.

<?php
$arr = array
  (
   &#39;Name&#39;=>&#39;希亚&#39;,
   &#39;Age&#39;=>
  );
$jsonencode = json_encode($arr);
echo $jsonencode;
?>

Die Ergebnisse der Ausführung des Programms sind wie folgt:

{"Name":null,"Age":}

Das Chinesisch in der json_encode-Funktion ist codiert als null. Ich habe es sehr einfach gegoogelt. Um eine enge Integration mit dem Frontend zu ermöglichen, unterstützt Json meiner Meinung nach nur die utf-Codierung.

<?php
$array = array
 (
  &#39;title&#39;=>iconv(&#39;gb&#39;,&#39;utf-&#39;,&#39;这里是中文标题&#39;),
  &#39;body&#39;=>&#39;abcd...&#39;
 );
echo json_encode($array);
?>

Das Ergebnis der Ausführung dieses Programms ist:

{"title":"u8fd9u91ccu662fu4e2du6587u6807u9898","body":"abcd..."}

Alle chinesischen Schriftzeichen im Array Nach json_encode verschwinden sie oder u2353 usw. erscheinen.

Die Lösung besteht darin, die Funktion urlencode() zu verwenden, um Folgendes zu verarbeiten: Verwenden Sie vor json_encode urlencode(), um den gesamten Inhalt aller Arrays zu verarbeiten, und konvertieren Sie ihn dann mit json_encode() in einen JSON-String. und schließlich verwenden urldecode () Konvertieren Sie das codierte Chinesisch zurück.

<?php
/**************************************************************
 *
 * 使用特定function对数组中所有元素做处理
 * @param string &$array  要处理的字符串
 * @param string $function 要执行的函数
 * @return boolean $apply_to_keys_also  是否也应用到key上
 * @access public
 *
 *************************************************************/
function arrayRecursive(&$array, $function, $apply_to_keys_also = false)
{
 static $recursive_counter = ;
 if (++$recursive_counter > ) {
  die(&#39;possible deep recursion attack&#39;);
 }
 foreach ($array as $key => $value) {
  if (is_array($value)) {
   arrayRecursive($array[$key], $function, $apply_to_keys_also);
  } else {
   $array[$key] = $function($value);
  }
  if ($apply_to_keys_also && is_string($key)) {
   $new_key = $function($key);
   if ($new_key != $key) {
    $array[$new_key] = $array[$key];
    unset($array[$key]);
   }
  }
 }
 $recursive_counter--;
}
/**************************************************************
 *
 * 将数组转换为JSON字符串(兼容中文)
 * @param array $array  要转换的数组
 * @return string  转换得到的json字符串
 * @access public
 *
 *************************************************************/
function JSON($array) {
 arrayRecursive($array, &#39;urlencode&#39;, true);
 $json = json_encode($array);
 return urldecode($json);
}
$array = array
  (
   &#39;Name&#39;=>&#39;希亚&#39;,
   &#39;Age&#39;=>
  );
echo JSON($array);
?>

Diesmal war es erfolgreich, die Laufergebnisse sind wie folgt:

{"Name"::Xia,Alter::20"}

Zusammenfassung : Das Obige ist Der gesamte Inhalt dieses Artikels soll für das Studium aller hilfreich sein.

Verwandte Empfehlungen:

So komprimieren Sie ZIP-Dateien online mit PHP

So überprüfen Sie die E-Mail-Adresse mit PHP

Die Bedeutung der PHP-Abschlussfunktion

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung der PHP-Funktion json_encode(). 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