This article mainly introduces the detailed explanation of the PHP json_encode() function. Interested friends can refer to it. I hope it will be helpful to everyone.
Using the json_encode() built-in function in php (php > 5.2) can be used so that 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 $arr = array ( 'Name'=>'希亚', 'Age'=> ); $jsonencode = json_encode($arr); echo $jsonencode; ?>
The results of running the program are as follows:
{"Name":null,"Age":}
The Chinese in the json_encode function is encoded as null. I Googled it. It's very simple. In order to be closely integrated with the front end, Json only supports utf- encoding. I think it's because the front-end Javascript is also utf-.
<?php $array = array ( 'title'=>iconv('gb','utf-','这里是中文标题'), 'body'=>'abcd...' ); 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, then use json_encode() to convert it into a json string, and finally use urldecode () 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 = ; if (++$recursive_counter > ) { die('possible deep recursion attack'); } 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, 'urlencode', true); $json = json_encode($array); return urldecode($json); } $array = array ( 'Name'=>'希亚', 'Age'=> ); echo JSON($array); ?>
This time it was successful, the running results are as follows:
{"Name":"Xiya","Age":"20"}
Summary: The above is The entire content of this article is hoped to be helpful to everyone's study.
Related recommendations:
How to compress zip files online in php
How to verify email address in php
The meaning of PHP closure function
The above is the detailed content of Detailed explanation of PHP json_encode() function. For more information, please follow other related articles on the PHP Chinese website!