Ответ 1
Вы хотели бы использовать ->forget()
$collection->forget($key);
Ссылка на документацию метода забыл
У меня есть коллекция, которую я хочу перебрать и изменить, пока выбираю некоторые ее элементы. Но я не смог найти способ или способ удалить этот извлеченный элемент.
$selected = [];
foreach ($collection as $key => $value) {
if ($collection->selected == true) {
$selected[] = $value;
unset($value);
}
}
Это просто представление моего вопроса для демонстрации.
После @Ohgodwhy совета функцию Forgot() я проверил еще раз и увидел, что на самом деле неправильно понял функцию. Это было именно то, что я искал. После того, как я добавил "$collection-> забыть ($ key)" внутри оператора if, как в примере ниже, он заработал.
$selected = [];
foreach ($collection as $key => $value) {
if ($collection->selected == true) {
$selected[] = $value;
$collection->forget($key);
}
}
(это просто демонстрация)
Вы хотели бы использовать ->forget()
$collection->forget($key);
Ссылка на документацию метода забыл
Или вы можете использовать метод reject
$newColection = $collection->reject(function($element) {
return $item->selected != true;
});
или метод pull
$selected = [];
foreach ($collection as $key => $item) {
if ($item->selected == true) {
$selected[] = $collection->pull($key);
}
}
Laravel Collection
реализует интерфейс PHP ArrayAccess
(именно поэтому использование foreach
возможно в первую очередь).
Если у вас уже есть ключ, вы можете просто использовать PHP unset
.
Я предпочитаю это, потому что он явно изменяет коллекцию и легко запоминается.
foreach ($collection as $key => $value) {
unset($collection[$key]);
}
Если вы знаете ключ, который вы сбрасываете, ставьте непосредственно через запятую отделенный
unset($attr['placeholder'], $attr['autocomplete']);