Arr::onlyValues() & exceptValues() — фильтрация по значениям в Laravel 12.46Хелперы
Arr::only() и Arr::except() отлично фильтруют массивы по ключам. А что, если нужно отфильтровать именно по значениям?Раньше приходилось комбинировать
array_filter() с in_array() и писать callback-функции. В Laravel 12.46.0 появились два новых метода, которые делают это декларативно.Arr::onlyValues() — оставляет только совпадающие значения:$roles = ['admin', 'editor', 'viewer', 'guest'];
Arr::onlyValues($roles, ['admin', 'editor']);
// Результат: [0 => 'admin', 1 => 'editor']
Arr::exceptValues() — удаляет указанные значения:$statuses = ['pending', 'completed', 'failed', 'shipped'];
Arr::exceptValues($statuses, ['failed', 'completed']);
// Результат: [0 => 'pending', 3 => 'shipped'] (ключи сохраняются!)
Строгий режим для смешанных типов:
Необязательный третий параметр
strict: true включает проверку типа (===).$mixed = [1, '1', 2, '2', 3];
Arr::onlyValues($mixed, [1, 2, 3], strict: true);
// Результат: [0 => 1, 2 => 2, 4 => 3] (только integer)
Где это удобно?
→ Фильтрация списков: статусы, роли, категории.
→ Очистка ввода: разрешённые/запрещённые значения.
→ Работа с конфигурациями и перечислениями (enum-like arrays).
Небольшое, но очень приятное дополнение для более чистого и выразительного кода.
📱 @dev_notes_ru
#PHP #Laravel12