PHP服务端开发入门——8、PHP数组与JSON的转换

632 阅读2分钟

PHP数组与JSON的转换

本节介绍

  • PHP数组转JSON
  • JSON转PHP数组

1. PHP数组和ISON之间的转换

  • 从PHP5.2开始,PHP提供原生的函数实现JSON字符串和PHP结构间的转换。
    • 使用函数json_encode()可以将一个数组转化为JSON格式的字符串
    • 使用函数json_decode()可以将JSON字符串转化为PHP数组

2. PHP数组转ISON

  • 使用函数json_encode()可以将PAP撒组转化为J5ON字符串
  • 语法:string json_encode (mixed value [, intoplions =0])
    • 成功返回value值的JSON形式字符串,失败返回false
  • 参数说明:
    • 参数1:必选值,待编码的value,除了resource类型之外,可以为任何数据类型(通常是数组和对象)
    • 参数2:可选值
  • 示例:
    • <?php
      //将PHP数组转化为JSON字符串
      
      $a1 = array(
          "k1" => "v1",
          "k2" => "v2",
          "k3" => "v3"
          ) ;
      
      $a2 = array(
          "k1" => "v4",
          "k2" => "v5",
          "k3" => "v6"
          ) ;
      
      $aa = array($a1, $a2) ;
      
      
      $jsonStr = json_encode($aa) ;
      
      //直接打印
      echo($jsonStr);
      
      ?> 
      

  • 接口封装:
    • <?php
      //将PHP数组转化为JSON字符串
      
      $a1 = array(
          "k1" => "v1",
          "k2" => "v2",
          "k3" => "v3"
          ) ;
      
      $a2 = array(
          "k1" => "v4",
          "k2" => "v5",
          "k3" => "v6"
          ) ;
      
      $aa = array($a1, $a2) ;
      
      
      $jsonStr = json_encode($aa) ;
      
      $result = array(
          "resultCode" => 200,
          "message" => "successed",
          "data" => $aa
          ) ;
      
      $resultStr = json_encode($result) ;
      
      echo($resultStr) ;
      
      ?> 
      

  • 应用场景:一般情况下,所有的PHP接囗将返回的数据封装为数组,然后将数细转换为JSON字符串后返回给客户端

3. JSON转PHP数组

  • 使用函数json_decode()可以将JSON字符串转化为PHP数组
  • 语法:mixed json_decode (string json [, boolassoc])
    • 接受一个JSON格式的字符串并且把它转换为PHP变量
  • 参数说明:
    • 参数1:json格式字符串
    • 参数2:默认为false,返回php对象,为true则返回php数组
  • 示例:
    • <?php
      //JSON字符串转PHP数组
      
      $json = '[{"name":"carry", "sex":"man"}, {"name":"jack", "sex":"man"}, {"name":"amy", "sex":"woman"}]' ;
      
      echo ($json) ;
      
      ?>
      

  • 返回php对象
  • <?php
    //JSON字符串转PHP数组
    
    $json = '[{"name":"carry", "sex":"man"}, {"name":"jack", "sex":"man"}, {"name":"amy", "sex":"woman"}]' ;
    
    $arr = json_decode($json) ;
    
    var_dump($arr) ;
    
    ?>
    

  • 返回php数组
  • <?php
    //JSON字符串转PHP数组
    
    $json = '[{"name":"carry", "sex":"man"}, {"name":"jack", "sex":"man"}, {"name":"amy", "sex":"woman"}]' ;
    
    $arr = json_decode($json,true) ;
    
    var_dump($arr) ;
    
    ?>
    

  • 读取数据
  • <?php
    //JSON字符串转PHP数组
    
    $json = '[{"name":"carry", "sex":"man"}, {"name":"jack", "sex":"man"}, {"name":"amy", "sex":"woman"}]' ;
    
    $arr = json_decode($json,true) ;
    
    //打印第一个人的姓名
    echo($arr[0]["name"]) ;
    
    ?>
    

  • 应用场景:客户端在发送请求的时候,如果一个参数的值包含多个,如针对多条性查询,可将参数以JSON字符串格式发送