【发布时间】:2013-04-30 09:21:15
【问题描述】:
您好,我有一个数组,其中包含两个其他数组,使用以下代码:
foreach($relations as $rel){
$data[$i]["relationTo"] = $rel["name"];
$data[$i]["relation"] = $rel["relation"];
$i = $i+1;
}
foreach($relations as $rel){
$children[$i]["id"] = $rel["id2"];
$children[$i]["name"] = $rel["sname"];
$children[$i]["data"] = $data;
$i = $i+1;
}
foreach($relations as $rel){
$relationArray[$i]["id"] = $rel["id"];
$relationArray[$i]["name"] = $rel["name"];
$relationArray[$i]["children"] = $children;
$i = $i+1;
}
当我使用以下方法打印出来时:
print_r($relationArray);
它打印以下内容:
Array ( [2] => Array ( [id] => 4 [name] => Albaraa [children] =>
Array ( [1] => Array ( [id] => 5 [name] => Sadi [data] =>
Array ( [0] => Array ( [relationTo] => Albaraa [relation] => Father ) ) ) ) ) )
我正在使用 json_encode,我需要它以某种方式在 json 中输出,不包括开头的数组的索引计数......我使用时的 json 输出:
echo json_encode($relationArray);
目前是这样的:
{"2":{"id":"4","name":"Albaraa","children":
{"1":{"id":"5","name":"Sadi","data": [{"relationTo":"Albaraa","relation":"Father"}]}}}}
在前 2 个数组的前面加上“2”和“1”...这不是我想要达到的效果:
{"id":"4","name":"Albaraa","children":
{"id":"5","name":"Sadi","data": [{"relationTo":"Albaraa","relation":"Father"}]}}}}
任何帮助将不胜感激!
【问题讨论】:
-
您可以拥有两个 ids 索引(4 和 5)的唯一原因是因为它们位于 2 个不同的索引(2 和 1)中,否则一个会覆盖另一个
-
我没有看到您在遍历结果之前对数组执行
reset($relations);或unset($rel);。数组中的指针是否需要重置?我不确定我是否理解你为什么不使用 $key => $value 数组并期望它不会像现在这样使用数字索引而不是像你想要的 $key 那样使用“id”。
标签: php mysql sql database json