【问题标题】:How to get rid of the indexed count of arrays within an array in PHP如何摆脱PHP中数组中数组的索引计数
【发布时间】: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


【解决方案1】:

几种解决方案

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

2) 如果您仍然想这样做,您可以只提取值:

print_r(json_encode(array_values($array)));

【讨论】:

    猜你喜欢
    • 2022-11-19
    • 2020-08-08
    • 1970-01-01
    • 2019-09-06
    • 2013-12-22
    • 2020-10-29
    • 2015-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多