PHP json_encode() function introduction

巴扎黑
Release: 2023-03-02 15:28:02
Original
1813 people have browsed it

Using the json_encode() built-in function in php (php > 5.2) can make the data in php can be transferred and used well with other languages.
The function of this function is to convert numerical values ​​into json data storage format.

Php code

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

The program running results are as follows:

{"Name":null,"Age":20}
Copy after login

json_encode The Chinese in the json_encode function has been encoded as null. I Googled it and it is very simple. In order to closely integrate with the front end, Json only supports utf-8 encoding. I think The reason is that the front-end Javascript is also utf-8.

<?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);  
?>
Copy after login

The running result of this program is:

Js code

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

All Chinese characters in the array are missing or u2353 etc. appear after json_encode.
The solution is to use the urlencode() function to process the following. Before json_encode, use urlencode() to process all the contents of all arrays, then use json_encode() to convert them into json strings, and finally use urldecode() to encode them The Chinese is transferred back.

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);  
?>
Copy after login

It was successful this time, the running results are as follows:

Js code

{"Name":"希亚","Age":"20"}
Copy after login


Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!