Я хочу обновить массив внутри 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 не вернет все данные, которые я хочу.
Ваша ошибка должна быть здесь
foreach ($listOrders as $k => &$order) {
^
Удалить &
Кроме того, вы дважды перебираете свой $ listOrders с вашим кодом, не будет ли ваш список массивов всегда пустым после завершения итерации?
Если вы просто пытаетесь получить список заказов в списке, вы можете использовать array_column()
индексировать список id_order
, Поскольку вы можете иметь только 1 запись в массиве с определенным ключом, это закончится последней записью с определенным идентификатором заказа в массиве …
$uniqueList = array_column(listOrders, null, "id_order");
Если вам просто нужен список без индекса, вы можете использовать array_values()
переиндексировать список.
$uniqueList = array_values(array_column(listOrders, null, "id_order"));