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

Detaillierte Erklärung der Funktion json_encode() in PHP

黄舟
黄舟Original
2017-11-15 15:29:486972Durchsuche

Ich glaube, jeder weiß, dass die Funktion json_encode() in PHP eine eingebaute Funktion ist, die nur in Versionen über PHP5.2 verwendet werden kann. Die Funktion json_encode() verwendet die Daten in PHP um es gut in andere Sprachen integrieren zu können. Heute stellen wir Ihnen die Funktion son_encode() in PHP vor!

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;=>20
       );

$jsonencode = json_encode($arr);
echo $jsonencode;
?>

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

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

Das Chinesisch in der json_encode-Funktion ist als null codiert und es ist sehr einfach Um eine enge Integration mit dem Frontend zu gewährleisten, unterstützt Json nur die utf-8-Codierung. Ich denke, dass das Frontend Javascript auch der Grund für utf-8 ist.

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

echo json_encode($array);
?>

Das laufende Ergebnis dieses Programms ist:

{"title":"\u8fd9\u91cc\u662f\u4e2d\u6587\u6807\u9898","body":"abcd..."}

Alle chinesischen Zeichen im Array fehlen oder u2353 usw. erscheinen nach json_encode.

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

<?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 = 0;
    if (++$recursive_counter > 1000) {
        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;=>20
       );


echo JSON($array);
?>

Diesmal war es erfolgreich:

{"Name":"希亚","Age":"20"}

Zusammenfassung:

Ich glaube, dass jeder bestehen wird. Durch das Studium von Textbeispielen habe ich ein besseres Verständnis für die Funktion json_encode() in PHP erhalten. Ich hoffe, dass es für Ihre Arbeit hilfreich sein wird!

Verwandte Empfehlungen:

php json_encode() gibt kein Chinesisch aus

Detaillierte Erläuterung der PHP-Funktion json_encode() und des chinesischen verstümmelten Problems

Einführung in die PHP-Funktion json_encode()

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