Home  >  Article  >  Backend Development  >  Detailed explanation of json_encode() function in php

Detailed explanation of json_encode() function in php

黄舟
黄舟Original
2017-11-15 15:29:486918browse

I believe everyone knows that the json_encode() function in php is a built-in function , which can only be used in versions above php5.2. The json_encode() function uses the data in php to be well integrated with other languages. Pass it on and use it. Today we will introduce to you the son_encode() function in php!

The function of this function is to convert numerical values ​​into json data storage format.

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

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

The program running results are as follows:

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

The Chinese in the json_encode function is encoded as null. I Googled it and found it is very simple. In order to closely integrate with the front end, Json only supports utf-8 encoding. I think the Javascript on the front end is also the reason for 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);
?>

The running result of this program is:

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

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, and then use json_encode() to convert them into jsonString, and finally use urldecode() to convert the encoded Chinese back.

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

This time it was successful, the running results are as follows:

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

Summary:

I believe that everyone can pass the example of the text Study and have a better understanding of the json_encode() function in PHP. I hope it will be helpful to your work!

Related recommendations:

php json_encode() does not output Chinese

PHP json_encode() function detailed explanation and Chinese garbled problem

##PHP json_encode() function introduction

The above is the detailed content of Detailed explanation of json_encode() function in php. For more information, please follow other related articles on the PHP Chinese website!

Statement:
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