---
title: "filter() vs reject() - очищення даних"
url: https://laravelukraine.com/blog/filter-vs-reject-ocishhennia-danix
author: "Олексій Бабінцев"
date: 2026-08-21
---

# filter() vs reject() - очищення даних

Потрібно прибрати частину елементів? Писати складні if не обов'язково.

`filter()` залишає елементи, що відповідають умові.
`reject()` прибирає елементи, що відповідають умові.

**Різниця:**

* filter() - залишає truthy
* reject() - прибирає truthy
* Обидва повертають нову колекцію

**Розширено:**

Для простих порівнянь краще where(), whereIn(), whereBetween().

Порада: filter() без callback прибирає всі falsy (null, false, 0, '', []).

```php
// filter() - тільки активні
$active = $users->filter(fn($u) => $u->active === true);

// reject() - видалити неактивних
$active = $users->reject(fn($u) => $u->active === false);

// filter() без callback
$values = collect([1, 2, null, 3, false, '', 4]);
$cleaned = $values->filter();
// [1, 2, 3, 4]

// where()
$admins = $users->where('role', 'admin');
$verified = $users->where('email_verified_at', '!=', null);

// whereIn()
$staff = $users->whereIn('role', ['admin', 'moderator']);

// whereBetween()
$recent = $posts->whereBetween('created_at', [
  now()->subDays(7),
  now()
]);

// Комбінування фільтрів
$result = $users
  ->where('active', true)
  ->whereIn('role', ['admin', 'editor'])
  ->filter(fn($u) => $u->posts_count > 10);
```
