更改foreach php中的原始数组值

时间:2018-10-08 15:49:53

标签: php mysql foreach array-unset

我想在foreach中更新一个数组,我尝试了以下两个代码:

代码1:

 foreach ($listOrders as $k => $order) {

    foreach ($listOrders as $key => $o) 
    {
      if ($o["id_order"] == $order["id_order"])
      {
         unset($listOrders[$key]);
      }
    }

在此代码中不起作用

代码2:

     foreach ($listOrders as $k => &$order) {

     foreach ($listOrders as $key => $o) 
     {
        if ($o["id_order"] == $order["id_order"])
        {
           unset($listOrders[$key]);
        }
     }

如果我将&和$ order一起使用,则$ listOrders不会返回我想要的所有数据。

2 个答案:

答案 0 :(得分:0)

您的错误应该在这里

  foreach ($listOrders as $k => &$order) { 
                                ^

删除

您还使用代码对$ listOrders进行了两次迭代,迭代结束后数组列表是否总是为空?

答案 1 :(得分:0)

如果您只是想获取列表中的订单列表,则可以使用array_column()通过git merge -s theirs 为列表建立索引。由于您在带有特定键的数组中只能有1个条目,因此最终将以数组中具有特定订单ID的最后一个条目结束...

id_order

如果只需要没有索引的列表,则可以使用array_values()重新为列表建立索引。

$uniqueList = array_column(listOrders, null, "id_order");