Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung in die PHP-Funktion json_encode()

Einführung in die PHP-Funktion json_encode()

巴扎黑
巴扎黑Original
2016-12-01 09:41:111843Durchsuche

Durch die Verwendung der in PHP integrierten Funktion json_encode() (PHP > 5.2) können die Daten in PHP übertragen und gut mit anderen Sprachen verwendet werden.
Die Funktion dieser Funktion besteht darin, numerische Werte in das JSON-Datenspeicherformat zu konvertieren.

PHP-Code

<?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 codiert Als null. Um eine enge Integration mit dem Frontend zu ermöglichen, unterstützt Json meiner Meinung nach nur die utf-8-Codierung, da das Frontend auch 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:

Js-Code

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

Alle chinesischen Zeichen im Array werden gelöscht json_encode oder u2353 usw. erscheinen.
Die Lösung besteht darin, die Funktion urlencode() zu verwenden, um Folgendes zu verarbeiten: Vor json_encode den gesamten Inhalt aller Arrays mit urlencode() verarbeiten, ihn dann mit json_encode() in einen JSON-String konvertieren und schließlich verwenden urldecode() zum Konvertieren des codierten Chinesisch zurück.

PHP-Code

<?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);  
?>

Dieses Mal war es erfolgreich, die laufenden Ergebnisse sind wie folgt:

Js-Code

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


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