JSON 实际上是一个字符串化的 Javascript,如果你想表示一个键 => 值结构,这些结构应该是对象或关联数组。 PHP 将假定任何只有数字的关联数组作为常规数组的键,因此您应该将数组转换为对象。对象不能将数字作为键(属性),因此它们将被转换为字符串,因此您实际上将拥有 '0' => [1,2,3] ... 等等。
最简单的方法就是将数组转换为对象。看下面的例子:
<?php
$array = [0=>[1,2,3],1=>[4,5,6]];
$object = (object) $array;
print json_encode($array);
print json_encode($object);
?>
输出:
[[1,2,3],[4,5,6]]{"0":[1,2,3],"1":[4,5,6]}
加法:
解码 JSON 时,您可以进行相反的转换,即转换为数组:
<?php
$arr = (array)json_decode('{"0":[1,2,3],"1":[4,5,6]}');
var_dump($arr);
$obj = json_decode('{"0":[1,2,3],"1":[4,5,6]}');
var_dump($obj);
?>
输出:
array(2) {
[0]=>
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
}
[1]=>
array(3) {
[0]=>
int(4)
[1]=>
int(5)
[2]=>
int(6)
}
}
object(stdClass)#1 (2) {
["0"]=>
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
}
["1"]=>
array(3) {
[0]=>
int(4)
[1]=>
int(5)
[2]=>
int(6)
}
}