我正在尝试将SQL循环中的数据添加到数组的特定部分,但是当我执行json编码时,它似乎并没有保持数组格式。
我创建数组:
$array['type'] = 'update';
$array['tags']['data'] = array(array('name' => "Tag", 'tags' => array()));
然后在while的sql循环中:
$array['tags']['data']['tags'][] = array('a' => "$row[a]", 'b' => "$row[b]");
此循环后,json编码:
json_encode($array);
在输出中,“标签”在数据下添加了行,而我为该数组设置的行现在在tag:data:0:tags下,并且尚未填充该行。
data
也从[ ]
变成了{ }
,我需要成为[{ }]
。如果我退出循环,则数据部分位于[ { } ]
所在的位置。
希望如此!如果没有,可以扩展更多。
非常感谢
答案 0 :(得分:0)
您在data
和tags
之间有一个额外的数组
$array['tags']['data'] = array(array('name' => "Tag", 'tags' => array()));
print_r($array);
输出
Array
(
[tags] => Array
(
[data] => Array
(
[0] => Array
(
[name] => Tag
[tags] => Array
(
)
)
)
)
)
然后您尝试访问(用于分配)
$array['tags']['data']['tags'][] = array('a' => "$row[a]", 'b' => "$row[b]");
您的$array
实际应该是
$array['tags']['data'][0]['tags'][]
或者类似的东西...
没有更多的事情要做,这是我所能做的最好的事情,但这确实不能给答案打分,但是没有办法说明在注释中嵌套太多的数组。
您将得到的是这样的东西:
Array
(
[tags] => Array
(
[data] => Array
(
[0] => Array
(
[name] => Tag
[tags] => Array
(
)
),
[tags] => Array
(
[0] => Array
(
a => "$row[a]",
b => "$row[b]"
)
[1] => Array(...)
)
)
)
)
由于['data' => [0 => ['name'=>'Tag',...], 'tags' => [...]]
混合密钥,将在该位置{data : {0:{name:"Tag",...},tags:[]}}
给您一个JSON对象
P.S这真的让我很烦"$row[a]"
-我不知道为什么,但是... ...大声笑