入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

php中array转为json时的对象和数组的对应关系

创建时间:2017-11-18 投稿人: 浏览次数:689

php中数组转化为json时,总会感觉层级不是那么清晰,但其实只是json中自动处理了,
php中数组是一定有键值对来进行表示的,这种关系在php中是一种绝对的对应关系,但在json中却不总是,
{ } 大括号,表示定义一个对象,大部分情况下要有成对的属性和值,或是函数;[ ]中括号,表示一个数组,也可以理解为一个数组对象;

1、php一维数组

//php一维数组  字母数字下标混合 
array(3) {  
 ["a"] => string(1) "a"   
 [0] => string(1) "b"   
 [1] => string(1) "c" 
 } 

 //对应的json格式:
   {
    "0": "b",
    "1": "c",
    "a": "a" 
    }
  //php数组中如果既有字母下标,又有数字下标时,转为json时也是一一对应的关系,此时,被转化为了一个json对象;

·
·
·

//纯文本下标和混合下标情况一样
array(3) {
  ["name"] => string(5) "hover"
  ["age"] => int(29)
  ["sex"] => int(1)
}
{"name":"hover","age":29,"sex":1}

//php一维数组  纯数字下标混合
array(2) {
  [0] => string(1) "b"
  [1] => string(1) "c"
}
//对应的json格式
[
    "b",
    "c"
]

//在纯数字下标,且是自然顺序排序的时候,即从0开始没有间隔的依次排序的,则json会自动省略数字下标,此时,被转化为了一个json数组;

2、二维数组

//php二维数组  纯数字下标混合
array(2) {
  [0] => array(4) {
    ["id"] => string(1) "9"
    ["goods_id"] => string(2) "14"
    ["user_id"] => string(3) "748"
    ["goods_num"] => string(1) "3"
  }
  [1] => array(4) {
    ["id"] => string(2) "10"
    ["goods_id"] => string(2) "17"
    ["user_id"] => string(3) "748"
    ["goods_num"] => string(1) "2"
  }
}

//对应json格式
[
    {
        "id": "9",
        "goods_id": "14",
        "user_id": "748",
        "goods_num": "3"
    },
    {
        "id": "10",
        "goods_id": "17",
        "user_id": "748",
        "goods_num": "2"
    }
]
//php二维数组 字母数字下标混合
array(3) {
  [0] => array(4) {
    ["id"] => string(1) "9"
    ["goods_id"] => string(2) "14"
    ["user_id"] => string(3) "748"
    ["goods_num"] => string(1) "3"
  }
  [1] => array(4) {
    ["id"] => string(2) "10"
    ["goods_id"] => string(2) "17"
    ["user_id"] => string(3) "748"
    ["goods_num"] => string(1) "2"
  }
  ["time"] => array(2) {
    [0] => string(4) "test"
    [1] => string(1) "2"
  }
}

//对应的json格式
{
    "0": {
        "id": "9",
        "goods_id": "14",
        "user_id": "748",
        "goods_num": "3"
    },
    "1": {
        "id": "10",
        "goods_id": "17",
        "user_id": "748",
        "goods_num": "2"
    },
    "time": [
        "test",
        "2"
    ]
}

总结:以上可以发现,只要是php中的自然连续下标,转为json时会被转为json数组,不然则会被转为json对象,所以在与其它平台做数据交互的时候可以稍微注意一下,就可以很好的解决问题。

声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。