在PHP中执行json_encode多维数组时,我只是通过命名其中一个数组来注意不同的输出,而不是命名它们.例如:
$arrytest = array(array('a'=>1, 'b'=>2),array('c'=>3),array('d'=>4));
json_encode($arrytest)
Run Code Online (Sandbox Code Playgroud)
给出一个包含多个json对象的数组
[{"a":1,"b":2},{"c":3},{"d":4}];
Run Code Online (Sandbox Code Playgroud)
而只是为中间数组指定一个名称
$arrytest = array(array('a'=>1, 'b'=>2),"secondarray"=>array('c'=>3),array('d'=>4));
json_encode($arrytest)
Run Code Online (Sandbox Code Playgroud)
创建一个内部有多个json对象的json对象
{"0":{"a":1,"b":2},"secondarray":{"c":3},"1":{"d":4}};
Run Code Online (Sandbox Code Playgroud)
为什么第一个选项不会返回与第二个execpt相同的结果,而"1"代替"secondarray"
Mic*_*ski 31
在JSON中,数组[]只有每个都有数字键,而对象{}有字符串属性.在第二个示例中包含数组键会强制整个外部结构成为对象.由于包含字符串键,两个示例的内部对象都被制作为对象a,b,c,d.
如果您要JSON_FORCE_OBJECT在第一个示例中使用该选项,则应该返回与第二个示例类似的结构,外部结构是对象而不是数组.在没有指定您希望它作为对象的情况下,外部数组中缺少字符串键会导致PHP假定它将被编码为JSON中的等效数组结构.
$arrytest = array(array('a'=>1, 'b'=>2),array('c'=>3),array('d'=>4));
// Force the outer structure into an object rather than array
echo json_encode($arrytest , JSON_FORCE_OBJECT);
// {"0":{"a":1,"b":2},"1":{"c":3},"2":{"d":4}}
Run Code Online (Sandbox Code Playgroud)