一、php 使用json_encode()转换值中大括号与花括号区别
当array是一个从0开始的连续数组时,json_encode出来的结果是一个由[]括起来的字符串
'a',
'a',
'a',);var_dump($arrField);echo json_encode($arrField);//输出内容
array
0 => string 'a' (length=1)1 => string 'a' (length=1)2 => string 'a' (length=1)3 => string 'a' (length=1)
["a","a","a","a"]
当array是不从0开始或者不连续的数组时,json_encode出来的结果是一个由{}括起来的key-value模式的字符串
<?php $arrField = array(1=>'a',
'a',
'a',
'a',);var_dump($arrField);echo json_encode($arrField);//输出内容
array
1 => string 'a' (length=1)2 => string 'a' (length=1)3 => string 'a' (length=1)4 => string 'a' (length=1)
{"1":"a","2":"a","3":"a","4":"a"}
当我们需要他强制返回由[]括起来的字符串该怎么做呢?
非常简单,只要使用sort(),对数组排序,此函数为 array 中的元素赋与新的键名。这将删除原有的键名,而不是仅仅将键名重新排序。并将键值从高到低排序。
'a',
4 =>'a',
'a',);//var_dump($arrField);
echo json_encode($arrField);sort($arrField);echo "
转换为[]包围的字符串
";echo json_encode($arrField);//输出内容
{"0":"a","1":"a","4":"a","5":"a"}
转换为[]包围的字符串
["a","a","a","a"]
二、关于json_decode() 函数
json_decode(string $json [, bool $assoc ])
$json:json格式字符串,
$assoc:返回格式,当为真返回数组而非对象
当字符串为[1,1,1] 这种模式时,json_decode默认解析出来的结果是一个数组,
当字符串为{"1":1,"2":1} 这种模式时,json_decode默认解析出来的结果是一个对象,此时可以设置它的第二个参数为true强制让它返回数组
由于php无法区分一维数组和二维数组,才会出现以上情况,因为使用json编码时推荐将第二个参数设置为true