Метод zip
Метод zip применяется к коллекции и объединяет её элементы с элементами других коллекций или массивов, переданных в качестве аргументов. Первым параметром передаётся одна или несколько коллекций или массивов для объединения. Метод возвращает новую коллекцию, содержащую массивы, где на каждой позиции находятся соответствующие элементы из исходной коллекции и переданных коллекций. Если переданные коллекции короче исходной, недостающие элементы заменяются на null.
Синтаксис
<?php
collect($items)->zip($collection1, $collection2, ...);
?>
Пример
Давайте объединим коллекцию чисел с коллекцией строк:
<?php
use Illuminate\Support\Collection;
$numbers = collect([1, 2, 3, 4, 5]);
$letters = collect(['a', 'b', 'c', 'd', 'e']);
$res = $numbers->zip($letters);
echo $res;
?>
Результат выполнения кода:
[ [1, "a"], [2, "b"], [3, "c"], [4, "d"], [5, "e"] ]
Пример
Давайте объединим коллекцию с несколькими коллекциями одновременно:
<?php
use Illuminate\Support\Collection;
$primary = collect(['a', 'b', 'c']);
$secondary = collect([1, 2, 3]);
$tertiary = collect(['x', 'y', 'z']);
$res = $primary->zip($secondary, $tertiary);
echo $res;
?>
Результат выполнения кода:
[ ["a", 1, "x"], ["b", 2, "y"], ["c", 3, "z"] ]
Пример
Давайте посмотрим, что происходит, когда переданные коллекции имеют разную длину:
<?php
use Illuminate\Support\Collection;
$first = collect([1, 2, 3, 4]);
$second = collect(['a', 'b']);
$res = $first->zip($second);
echo $res;
?>
Результат выполнения кода:
[ [1, "a"], [2, "b"], [3, null], [4, null] ]
Пример
Давайте объединим коллекцию с обычным массивом:
<?php
use Illuminate\Support\Collection;
$users = collect(['user1', 'user2', 'user3']);
$ages = [25, 30, 35];
$res = $users->zip($ages);
echo $res;
?>
Результат выполнения кода:
[ ["user1", 25], ["user2", 30], ["user3", 35] ]