如何在PHP中消除数组中数组的索引计数

如何在PHP中消除数组中数组的索引计数,php,mysql,sql,database,json,Php,Mysql,Sql,Database,Json,您好,我有一个数组,其中包含两个其他数组,使用以下代码: foreach($relations as $rel){ $data[$i]["relationTo"] = $rel["name"]; $data[$i]["relation"] = $rel["relation"]; $i = $i+1; } foreach($relations as $rel){ $children[$i]["id"] = $r

您好,我有一个数组,其中包含两个其他数组,使用以下代码:

    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”和“1”…这不是我想要实现的,是这样的:

 {"id":"4","name":"Albaraa","children":
 {"id":"5","name":"Sadi","data":  [{"relationTo":"Albaraa","relation":"Father"}]}}}}
任何帮助都将不胜感激

几种解决方案

1) 不要通过
[$i]
输入值,准备新的完整内部数组,并用array\u push将其放入其中

2) 如果仍要这样做,可以仅提取以下值:


print_r(json_编码(数组值($array))

您可以拥有两个ID索引(4和5)的唯一原因是,它们位于两个不同的索引(2和1)中,否则其中一个将覆盖另一个。我看不到您正在执行
重置($relations)
未设置($rel)。数组中的指针是否需要重置?我不确定我是否理解为什么不使用$key=>$value数组,并希望它不会像现在一样使用数字索引,而不是像您希望的那样使用$key的“id”。