我将字典作为JSON发送到服务器。字典只包含1个键,即一个项目数组:
header('Content-type: application/json');
$request = json_decode(file_get_contents('php://input'));
$array = json_decode($request['array']);
键'array'的值是一个数组,不能是一个对象。
所以,基本上这两种方法将返回相同的东西:
$array = json_decode($request['array']);
$array = json_decode($request['array'], TRUE);
我是对的吗?
此方法的唯一用途是当您想要将对象转换为数组时:
$array = json_decode($request['object'], TRUE);
你为什么要这样做?
我的意思是,我确实知道可能会有这方面的应用,但另一方面,我花了一整天的时间来消化这种思维方式,但仍然感觉存在巨大的思维差距。
这种小小的便利与解析数据的具体方式相混淆,只会让像我这样的新手感到困惑。
答案 0 :(得分:5)
Javascript / JSON中的数组和对象之间存在明显的区别。数组没有显式索引,但是以数字方式编制索引,而对象未排序且具有命名属性。默认情况下,json_decode
尊重这种差异并将JSON数组解码为PHP数组,将JSON对象解码为PHP对象(stdClass
的实例)。
然而,PHP的数组也碰巧支持关联索引;因此可以将JSON对象解码为PHP对象或 PHP数组。您可以使用第二个参数选择自己喜欢的参数json_decode
。这里两种不同语言之间没有100%明确的1:1映射,所以有偏好。
答案 1 :(得分:0)
为什么真的存在,你可以理解,请参阅下面的代码。
<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
var_dump(json_decode($json, true));
?>
输出将用于上述代码:
object(stdClass)#1 (5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
array(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
答案 2 :(得分:0)
简单如果您使用true,我将以数组格式显示,如果您不使用,将显示