РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1031 of 1392 menu

Метод partition

Метод partition применяется к объекту коллекции и возвращает массив из двух коллекций. Первым параметром передаётся замыкание, которое для каждого элемента возвращает true или false. Если условие выполняется, элемент попадает в первую коллекцию, иначе - во вторую. Метод полезен для разделения данных на две группы по определённому признаку.

Синтаксис

<?php $collection = collect([1, 2, 3, 4, 5]); [$trueCollection, $falseCollection] = $collection->partition(function($value) { return $value > 3; }); ?>

Пример

Давайте разделим массив чисел на чётные и нечётные:

<?php use Illuminate\Support\Collection; $numbers = [1, 2, 3, 4, 5]; $collection = collect($numbers); [$even, $odd] = $collection->partition(function($value) { return $value % 2 === 0; }); echo "Чётные числа: " . implode(', ', $even->all()); echo "Нечётные числа: " . implode(', ', $odd->all()); ?>

Результат выполнения кода:

"Чётные числа: 2, 4" "Нечётные числа: 1, 3, 5"

Пример

Разделим коллекцию строк по длине слова:

<?php use Illuminate\Support\Collection; $words = ['abcde', 'user', 'category', 'article']; $collection = collect($words); [$longWords, $shortWords] = $collection->partition(function($value) { return strlen($value) > 5; }); echo "Длинные слова (> 5 символов): " . implode(', ', $longWords->all()); echo "Короткие слова (<= 5 символов): " . implode(', ', $shortWords->all()); ?>

Результат выполнения кода:

"Длинные слова (> 5 символов): category, article" "Короткие слова (<= 5 символов): abcde, user"

Пример

Разделим коллекцию объектов на активные и неактивные записи:

<?php use Illuminate\Support\Collection; $users = [ ['name' => 'John', 'active' => true], ['name' => 'Jane', 'active' => false], ['name' => 'Bob', 'active' => true], ['name' => 'Alice', 'active' => false] ]; $collection = collect($users); [$activeUsers, $inactiveUsers] = $collection->partition(function($user) { return $user['active'] === true; }); echo "Активные пользователи: " . implode(', ', $activeUsers->pluck('name')->all()); echo "Неактивные пользователи: " . implode(', ', $inactiveUsers->pluck('name')->all()); ?>

Результат выполнения кода:

"Активные пользователи: John, Bob" "Неактивные пользователи: Jane, Alice"

Смотрите также

  • метод filter,
    который выбирает элементы, соответствующие условию
  • метод reject,
    который исключает элементы по условию
  • метод where,
    который фильтрует по значениям ключей
  • метод split,
    который разбивает коллекцию на равные группы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить