Home  >  Article  >  Backend Development  >  How to implement PHP custom recursive function to convert array to JSON

How to implement PHP custom recursive function to convert array to JSON

不言
不言Original
2018-07-21 12:55:151413browse

This article shares with you how to implement the function of converting arrays to JSON using PHP's custom recursive function. The content is very good. Friends in need can refer to it. I hope it can help everyone.

The example in this article describes the PHP custom recursive function to implement the array to JSON function. Share it with everyone for your reference, the details are as follows:

Question:

Due to the need to provide interfaces to other companies in a recent project, Feed them GBK-encoded json data, but one problem is that the json_encode encryption function in PHP only supports utf-8 encoding, which is more embarrassing. Our data is GBK encoded, and the data format required by the receiver is also GBK encoded. At first, we thought of converting the data to utf-8 encoding and then using the json_encode function. As a result, this led to our The Chinese content was garbled, so the final method was to manually encrypt the data.

Implementation:

To realize this function, the most important thing is to observe the characteristics of json data. At the beginning, the LZ summary was not in place and it could not be completely To implement the function of the json_encode function, refer to the information on the Internet later to implement this function (it is a recursive function):

function newArrayToJson($array)
{
  if(!is_array($array))
  {
    return '';
  }
  $func = __FUNCTION__;
  //关键判断是不是关联数组,以此来决定是否需要json加密key和使用[]
  $associative = (array_keys($array) !== range(0, count($array) - 1)) ? true : false;
  if($associative && !empty($array))
  {
    $construct = array();
    foreach($array as $key => $value)
    {
      $key = '"'.$key.'"';
      if(is_array($value))
      {
        $value = $func($value);
      }
      elseif(!is_numeric($value))
      {
        $value = '"'.$value.'"';
      }
      $construct[] = "$key:$value";
    }
    $result = "{".implode(",",$construct)."}";
  }
  else
  {
    $construct = array();
    foreach($array as $value)
    {
      if(is_array($value))
      {
        $value = $func($value);
      }
      else if(!is_numeric($value))
      {
        $value = '"'.$value.'"';
      }
      $construct[] = $value;
    }
    $result = "[".implode(",", $construct)."]";
  }
  return $result;
}

//测试:
$arr=array('1'=>'www.jb51.net','2'=>'www.baidu.com','3'=>'www.sina.com.cn','4'=>'脚本之家');
echo newArrayToJson($arr);
/*
运行结果:
{"1":"www.jb51.net","2":"www.baidu.com","3":"www.sina.com.cn","4":"脚本之家"}
*/

Related recommendations:

Introduction to 10 commonly used string functions in PHP and how to use them

The above is the detailed content of How to implement PHP custom recursive function to convert array to JSON. 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