0

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

代码 1:

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

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

在这个 codeunset 中不起作用

代码 2:

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

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

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

4

2 回答 2

0

如果您只是想获取列表中的订单列表,您可以使用array_column()索引列表id_order。由于您只能在具有特定键的数组中拥有 1 个条目,因此这将最终以数组中具有特定订单 ID 的最后一个条目...

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

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

$uniqueList = array_values(array_column(listOrders, null, "id_order"));
于 2018-10-08T16:06:02.890 回答
0

你的错误应该在这里

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

删除&

此外,您正在使用您的代码对 $listOrders 进行两次迭代,在迭代完成后,您的数组列表不会总是为空吗?

于 2018-10-08T16:03:59.430 回答