PHP7.1在Windows7系统(DELL G3电脑)下json转数组:json_decode()的用法及常见错误
本文的操作环境为 Windows7 系统,使用的是 PHP7.1 版,电脑型号是 DELL G3。

php如何实现json转数组?
json_decode()
该函数用于将json文本转换为相应的PHP数据结构。
下面是一个例子:
$json ='{"foo": 12345}';
$obj = json_decode($json);
print $obj->{'foo'};// 12345
一般而言,json_decode()通常会返回一个 PHP 对象,而非数组。例如:
有一个名为 $json 的对象,其中包含了 "a" 对应的值为 1,"b" 对应的值为 2,"c" 对应的值为 3,"d" 对应的值为 4,"e" 对应的值为 5 。 var_dump(json_decode($json));
结果就是生成一个PHP对象:
object(stdClass)#1 (5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
如果想要强制生成 PHP 关联数组,那么就需要给 json_decode()添加一个参数 true 。
有一个名为 $json 的变量,它的值为 {"a":1,"b":2,"c":3,"d":4,"e":5} 。
使用 json_decode 函数对 $json 进行解码,将其转换为关联数组形式,并通过 var_dump 函数输出解码后的结果。
结果就生成了一个关联数组:
array(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
下面三种json写法都是错的,你能看出错在哪里吗?
json_decode()的常见错误
{"bar": "baz"} 被赋值给了 $bad_json ;$bad_json 中包含了键值对 {'bar': 'baz'} ;$bad_json 的值为 {'bar': 'baz'} ;{"bar": "baz"} 被存储在 $bad_json 中 。
$bad_json ='{ bar: "baz" }';
{"bar": "baz", } 被赋值给了 $bad_json 。
第一个错误在于,json 的分隔符仅被允许。
第二个错误在于,json 名值对的“名”(即冒号左边的部分),在任何情形下都必须使用双引号。第三个错误是,在最后一个值之后不能添加逗号(trailing comma)。对这三个字符串执行 json_decode()操作,都会返回 null 并且报错。
另外,json 仅能用于表示对象和数组。倘若对一个字符串或数值运用 json_decode(),那么就会返回 null。
通过 var_dump 函数输出解码后的结果。