partition() - поділ колекції на дві частини
Потрібно поділити користувачів на активних і неактивних?
partition() повертає одразу дві групи.
Різниця з filter():
- filter() повертає лише truthy
- partition() повертає truthy і falsy одразу
Сценарії:
- Валідні / невалідні дані
- Passed / failed
- Approved / pending
Порада: зручно для різних обробок двох груп.
[$active, $inactive] = $users->partition(fn($u) => $u->active);
// Дві різні обробки
$active->each(fn($u) => ...);
$inactive->each(fn($u) => ...);
// Валідація
[$valid, $invalid] = $orders->partition(fn($o) =>
$o->total > 0 && $o->email !== null
);
// Студенти
[$passed, $failed] = $students->partition(
fn($s) => $s->score >= 60
);