我有以下PHP数组:
$mod = array( 1 => array(), 2 => array(), 3 => array());
当我json_encode
$mod
时,它产生了这个:
{"1":[],"2":[],"3":[]}
但我希望能够以下列方式做到这一点:
$tstarray = array();
$newaray = array(1 => array());
$newaray2 = array(2 => array());
$newaray3 = array(3 => array());
array_push($tstarray, $newaray);
array_push($tstarray, $newaray2);
array_push($tstarray, $newaray3);
当我json_encode
$tstarray
时,会产生如下结果:
[{"1":[]},{"2":[]},{"3":[]}]
我希望第二个结果看起来像第一个结果。通过"看"我的意思是同一类型。你知道我需要改变什么才能让它变得相同吗?
更新:我需要哪种最终结果?
如果我有var x = 9
那么我需要一个while循环来创建$mod
变量,但是从1 => array()
到9 => array()
一直这样做。我该怎么做?
答案 0 :(得分:3)
$arr1 = array(1 => array());
$arr2 = array(2 => array());
$arr3 = array(3 => array());
$arr = $arr1 + $arr2 + $arr3;
print_r(json_encode($arr));
输出是:
{"1":[],"2":[],"3":[]}
这也适用于嵌套数组。
$arr1 = array(1 => array(1 => "A", 2 => "B"));
$arr2 = array(2 => array(1, 2, 3));
$arr3 = array(3 => array(1 => "C", 2 => "D"));
$arr = $arr1 + $arr2 + $arr3;
print_r(json_encode($arr));
输出:
{"1":{"1":"A","2":"B"},"2":[1,2,3],"3":{"1":"C","2":"D"}}
一旦开始在数组中定义零索引值,就会出现问题......此时它们将开始将json编码为真数组。
请求更新
$arr = array();
for ($i = 1; $i < 10; ++$i)
$arr = $arr + array($i => array());
print_r(json_encode($arr));
输出:
{"1":[],"2":[],"3":[],"4":[],"5":[],"6":[],"7":[],"8":[],"9":[]}