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

Detailed explanation of PHP json_encode() function

墨辰丷
墨辰丷Original
2018-06-06 11:58:064253browse

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
  (
   &#39;Name&#39;=>&#39;希亚&#39;,
   &#39;Age&#39;=>
  );
$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
 (
  &#39;title&#39;=>iconv(&#39;gb&#39;,&#39;utf-&#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, 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(&#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;=>
  );
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!

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