Этот репозиторий содержит несколько полезных макросов для сбора данных.
Spatie — агентство веб-дизайна, базирующееся в Антверпене, Бельгия. На нашем сайте вы найдете обзор всех наших проектов с открытым исходным кодом.
Мы вкладываем много ресурсов в создание лучших в своем классе пакетов с открытым исходным кодом. Вы можете поддержать нас, купив один из наших платных продуктов.
Мы очень признательны вам за отправку нам открытки из вашего родного города с указанием того, какой из наших пакетов вы используете. Наш адрес вы найдете на странице контактов. Все полученные открытки мы публикуем на нашей виртуальной стене открыток.
Вы можете загрузить пакет через композитор:
composer require spatie/laravel-collection-macrosПакет автоматически зарегистрируется.
afteratsecondthirdfourthfifthsixthseventheighthninthtenthgetNthbeforecatchchunkBycollectBycontainsAnycontainsAlleachConsextractfilterMapfirstOrFailfirstOrPushfromPairsgetCaseInsensitiveglobgroupByModelhasCaseInsensitiveheadififAnyifEmptyinsertAfterinsertAfterKeyinsertAtinsertBeforeinsertBeforeKeynonepaginatepathpluckManypluckManyValuespluckToArrayprioritizerecursiverotatesectionBysimplePaginatesliceBeforetailtrytoPairstransposevalidateweightedRandomwithSizeafterПолучите следующий предмет из коллекции.
$ collection = collect ([ 1 , 2 , 3 ]);
$ currentItem = 2 ;
$ currentItem = $ collection -> after ( $ currentItem ); // return 3;
$ collection -> after ( $ currentItem ); // return null;
$ currentItem = $ collection -> after ( function ( $ item ) {
return $ item > 1 ;
}); // return 3;Вы также можете передать второй параметр, который будет использоваться в качестве резервного варианта.
$ collection = collect ([ 1 , 2 , 3 ]);
$ currentItem = 3 ;
$ collection -> after ( $ currentItem , $ collection -> first ()); // return 1;atПолучить элемент по индексу.
$ data = new Collection ([ 1 , 2 , 3 ]);
$ data -> at ( 0 ); // 1
$ data -> at ( 1 ); // 2
$ data -> at (- 1 ); // 3secondПолучить элемент по второму индексу.
$ data = new Collection ([ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ]);
$ data -> second (); // 2thirdПолучить элемент по третьему индексу.
$ data = new Collection ([ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ]);
$ data -> third (); // 3fourthПолучить элемент по четвертому индексу.
$ data = new Collection ([ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ]);
$ data -> fourth (); // 4fifthПолучите элемент по пятому индексу.
$ data = new Collection ([ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ]);
$ data -> fifth (); // 5sixthПолучите элемент по шестому индексу.
$ data = new Collection ([ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ]);
$ data -> sixth (); // 6seventhПолучите элемент по седьмому индексу.
$ data = new Collection ([ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ]);
$ data -> seventh (); // 7eighthПолучите элемент по восьмому индексу.
$ data = new Collection ([ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ]);
$ data -> eighth (); // 8ninthПолучите элемент по девятому индексу.
$ data = new Collection ([ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ]);
$ data -> ninth (); // 9tenthПолучить элемент по десятому индексу.
$ data = new Collection ([ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ]);
$ data -> tenth (); // 10getNthПолучить элемент по n-му элементу.
$ data = new Collection ([ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 ]);
$ data -> getNth ( 11 ); // 11beforeПолучить предыдущий предмет из коллекции.
$ collection = collect ([ 1 , 2 , 3 ]);
$ currentItem = 2 ;
$ currentItem = $ collection -> before ( $ currentItem ); // return 1;
$ collection -> before ( $ currentItem ); // return null;
$ currentItem = $ collection -> before ( function ( $ item ) {
return $ item > 2 ;
}); // return 2;Вы также можете передать второй параметр, который будет использоваться в качестве резервного варианта.
$ collection = collect ([ 1 , 2 , 3 ]);
$ currentItem = 1 ;
$ collection -> before ( $ currentItem , $ collection -> last ()); // return 3;catch См. Try
chunkBy Разбивает значения из коллекции на группы, если заданный обратный вызов является истинным. Если необязательный параметр $preserveKeys передан как true , исходные ключи сохранятся.
collect ([ ' A ' , ' A ' , ' B ' , ' A ' ])-> chunkBy ( function ( $ item ) {
return $ item == ' A ' ;
}); // return Collection([['A', 'A'],['B'], ['A']])collectByПолучите предмет по заданному ключу и соберите его.
$ collection = collect ([
' foo ' => [ 1 , 2 , 3 ],
' bar ' => [ 4 , 5 , 6 ],
]);
$ collection -> collectBy ( ' foo ' ); // Collection([1, 2, 3])Вы также можете передать второй параметр, который будет использоваться в качестве резервного варианта.
$ collection = collect ([
' foo ' => [ 1 , 2 , 3 ],
' bar ' => [ 4 , 5 , 6 ],
]);
$ collection -> collectBy ( ' baz ' , [ ' Nope ' ]); // Collection(['Nope'])containsAny Возвращает true если в коллекции существует одно или несколько заданных значений.
$ collection = collect ([ ' a ' , ' b ' , ' c ' ]);
$ collection -> containsAny ([ ' b ' , ' c ' , ' d ' ]); // returns true
$ collection -> containsAny ([ ' c ' , ' d ' , ' e ' ]); // returns true
$ collection -> containsAny ([ ' d ' , ' e ' , ' f ' ]); // returns false
$ collection -> containsAny ([]); // returns falsecontainsAll Вернет true если все заданные значения существуют в коллекции.
$ collection = collect ([ ' a ' , ' b ' , ' c ' ]);
$ collection -> containsAll ([ ' b ' , ' c ' ,]); // returns true
$ collection -> containsAll ([ ' c ' , ' d ' ]); // returns false
$ collection -> containsAll ([ ' d ' , ' e ' ]); // returns false
$ collection -> containsAll ([]); // returns trueeachCons Получите следующих последовательных соседей в коллекции из заданного размера фрагмента. Если необязательный параметр $preserveKeys передан как true , исходные ключи сохранятся.
collect ([ 1 , 2 , 3 , 4 ])-> eachCons ( 2 ); // return collect([[1, 2], [2, 3], [3, 4]])extract Извлечь ключи из коллекции. Это очень похоже на only , но с двумя ключевыми отличиями:
extract возвращает массив значений, а не ассоциативный массивnull , а не пропущено. extract полезен при использовании синтаксиса Short list() PHP 7.1.
[ $ name , $ role ] = collect ( $ user )-> extract ( ' name ' , ' role.name ' );filterMapСопоставьте коллекцию и удалите ложные значения за один раз.
$ collection = collect ([ 1 , 2 , 3 , 4 , 5 , 6 ])-> filterMap ( function ( $ number ) {
$ quotient = $ number / 3 ;
return is_integer ( $ quotient ) ? $ quotient : null ;
});
$ collection -> toArray (); // returns [1, 2]firstOrFail Получите первый предмет. Выдает SpatieCollectionMacrosExceptionsCollectionItemNotFound если элемент не найден.
$ collection = collect ([ 1 , 2 , 3 , 4 , 5 , 6 ])-> firstOrFail ();
$ collection -> toArray (); // returns [1]
collect ([])-> firstOrFail (); // throws SpatieCollectionMacrosExceptionsCollectionItemNotFoundfirstOrPushПолучите первый элемент, используя вызываемый объект, указанный в качестве первого параметра. Если значения не существует, поместите значение второго параметра в коллекцию. Вы можете передать вызываемый объект в качестве второго параметра.
Этот метод действительно полезен при работе с кэшированными свойствами класса, когда вы хотите сохранить значение, полученное из API, или дорогостоящую в вычислительном отношении функцию в коллекции для многократного использования.
$ collection = collect ([ 1 , 2 , 3 ])-> firstOrPush ( fn ( $ item ) => $ item === 4 , 4 );
$ collection -> toArray (); // returns [1, 2, 3, 4]Иногда вам может потребоваться указать целевую коллекцию, в которую будет отправлена информация. Вы можете передать это как третий параметр.
$ collection = collect ([ 1 , 2 , 3 ]);
$ collection -> filter ()-> firstOrPush ( fn ( $ item ) => $ item === 4 , 4 , $ collection );
$ collection -> toArray (); // returns [1, 2, 3, 4]fromPairsПреобразуйте коллекцию в элемент коллекции в форме ассоциативного массива.
$ collection = collect ([[ ' a ' , ' b ' ], [ ' c ' , ' d ' ], [ ' e ' , ' f ' ]])-> fromPairs ();
$ collection -> toArray (); // returns ['a' => 'b', 'c' => 'd', 'e' => 'f']getCaseInsensitiveПолучить значение заданного ключа.
Если ключ является строкой, мы будем искать ключ, используя сравнение без учета регистра.
$ collection = collect ([
' foo ' => ' bar ' ,
]);
$ collection -> getCaseInsensitive ( ' Foo ' ); // returns 'bar';glob Возвращает коллекцию результатов glob() .
Collection:: glob ( ' config/*.php ' );groupByModel Похож на groupBy , но группирует коллекцию по модели Eloquent. Поскольку ключ является объектом, а не целым числом или строкой, результаты делятся на отдельные массивы.
$ posts -> groupByModel ( ' category ' );
// [
// [$categoryA, [/*...$posts*/]],
// [$categoryB, [/*...$posts*/]],
// ]; Полная подпись: groupByModel($callback, $preserveKeys, $modelKey, $itemsKey)
hasCaseInsensitiveОпределите, содержит ли коллекция ключ с заданным именем.
Если $key — это строка, мы будем искать ключ, используя сравнение без учета регистра.
$ collection = collect ([
' foo ' => ' bar ' ,
]);
$ collection -> hasCaseInsensitive ( ' Foo ' ); // returns true;headИзвлекает первый элемент из коллекции.
$ collection = collect ([ 1 , 2 , 3 ]);
$ collection -> head (); // return 1
$ collection = collect ([]);
$ collection -> head (); // return nullif Макрос if может помочь разветвить цепочки сбора данных. Вот подпись этого макроса:
if (mixed $ if , mixed $ then = null , mixed $ else = null ): mixed $if , $then и $else могут быть любого типа. Если любому из этих параметров передается замыкание, то это замыкание будет выполнено, и макрос будет использовать его результаты.
Когда $if возвращает истинное значение, будет возвращено $then , в противном случае будет возвращено $else .
Вот несколько примеров:
collect ()-> if ( true , then: true , else: false ); // returns true
collect ()-> if ( false , then: true , else: false ); // returns false Когда замыкание передается в $if , $then или $else , вся коллекция будет передана в качестве аргумента этому замыканию.
// the `then` closure will be executed
// the first element of the returned collection now contains "THIS IS THE VALUE"
$ collection = collect ([ ' this is a value ' ])
-> if (
fn ( Collection $ collection ) => $ collection -> contains ( ' this is a value ' ),
then: fn ( Collection $ collection ) => $ collection -> map ( fn ( string $ item ) => strtoupper ( $ item )),
else: fn ( Collection $ collection ) => $ collection -> map ( fn ( string $ item ) => Str:: kebab ( $ item ))
);
// the `else` closure will be executed
// the first element of the returned collection now contains "this-is-another-value"
$ collection = collect ([ ' this is another value ' ])
-> if (
fn ( Collection $ collection ) => $ collection -> contains ( ' this is a value ' ),
then: fn ( Collection $ collection ) => $ collection -> map ( fn ( string $ item ) => strtoupper ( $ item )),
else: fn ( Collection $ collection ) => $ collection -> map ( fn ( string $ item ) => Str:: kebab ( $ item ))
);ifAnyВыполняет переданный вызываемый объект, если коллекция не пуста. Вся коллекция будет возвращена.
collect ()-> ifAny ( function ( Collection $ collection ) { // empty collection so this won't get called
echo ' Hello ' ;
});
collect ([ 1 , 2 , 3 ])-> ifAny ( function ( Collection $ collection ) { // non-empty collection so this will get called
echo ' Hello ' ;
});ifEmptyВыполняет переданный вызываемый объект, если коллекция пуста. Вся коллекция будет возвращена.
collect ()-> ifEmpty ( function ( Collection $ collection ) { // empty collection so this will called
echo ' Hello ' ;
});
collect ([ 1 , 2 , 3 ])-> ifEmpty ( function ( Collection $ collection ) { // non-empty collection so this won't get called
echo ' Hello ' ;
});insertAfterВставляет элемент после первого появления данного элемента и возвращает обновленный экземпляр коллекции. По желанию можно дать ключ.
collect ([ ' zero ' , ' two ' , ' three ' ])-> insertAfter ( ' zero ' , ' one ' );
// Collection contains ['zero', 'one', 'two', 'three']
collect ([ ' zero ' => 0 , ' two ' => 2 , ' three ' => 3 ]-> insertAfter ( 0 , 5 , ' five ' );
// Collection contains ['zero' => 0, 'five' => 5, 'two' => 2, 'three' => 3]insertAfterKeyВставляет элемент после заданного ключа и возвращает обновленный экземпляр коллекции. При желании можно указать ключ для нового элемента.
collect ([ ' zero ' , ' two ' , ' three ' ])-> insertAfterKey ( 0 , ' one ' );
// Collection contains ['zero', 'one', 'two', 'three']
collect ([ ' zero ' => 0 , ' two ' => 2 , ' three ' => 3 ]-> insertAfterKey ( ' zero ' , 5 , ' five ' );
// Collection contains ['zero' => 0, 'five' => 5, 'two' => 2, 'three' => 3]insertAtВставляет элемент по заданному индексу и возвращает обновленный экземпляр коллекции. По желанию можно дать ключ.
collect ([ ' zero ' , ' two ' , ' three ' ])-> insertAt ( 1 , ' one ' );
// Collection contains ['zero', 'one', 'two', 'three']
collect ([ ' zero ' => 0 , ' two ' => 2 , ' three ' => 3 ]-> insertAt ( 1 , 5 , ' five ' );
// Collection contains ['zero' => 0, 'five' => 5, 'two' => 2, 'three' => 3]insertBeforeВставляет элемент перед первым появлением данного элемента и возвращает обновленный экземпляр Collection. По желанию можно дать ключ.
collect ([ ' zero ' , ' two ' , ' three ' ])-> insertBefore ( ' two ' , ' one ' );
// Collection contains ['zero', 'one', 'two', 'three']
collect ([ ' zero ' => 0 , ' two ' => 2 , ' three ' => 3 ]-> insertBefore ( 2 , 5 , ' five ' );
// Collection contains ['zero' => 0, 'five' => 5, 'two' => 2, 'three' => 3]insertBeforeKeyВставляет элемент перед заданным ключом и возвращает обновленный экземпляр коллекции. При желании можно указать ключ для нового элемента.
collect ([ ' zero ' , ' two ' , ' three ' ])-> insertBeforeKey ( 1 , ' one ' );
// Collection contains ['zero', 'one', 'two', 'three']
collect ([ ' zero ' => 0 , ' two ' => 2 , ' three ' => 3 ]-> insertBeforeKey ( ' two ' , 5 , ' five ' );
// Collection contains ['zero' => 0, 'five' => 5, 'two' => 2, 'three' => 3]none Проверяет, не содержит ли коллекция каких-либо вхождений данного элемента, пары ключ-значение или проходит ли проверка истинности. Функция принимает те же параметры, что и метод коллекции contains .
collect ([ ' foo ' ])-> none ( ' bar ' ); // returns true
collect ([ ' foo ' ])-> none ( ' foo ' ); // returns false
collect ([[ ' name ' => ' foo ' ]])-> none ( ' name ' , ' bar ' ); // returns true
collect ([[ ' name ' => ' foo ' ]])-> none ( ' name ' , ' foo ' ); // returns false
collect ([ ' name ' => ' foo ' ])-> none ( function ( $ key , $ value ) {
return $ key === ' name ' && $ value === ' bar ' ;
}); // returns truepaginate Создайте экземпляр LengthAwarePaginator для элементов коллекции.
collect ( $ posts )-> paginate ( 5 ); Это разбивает содержимое $posts на страницы по 5 элементов на странице. paginate принимает довольно много опций, за подробным руководством обратитесь к документации Laravel.
paginate(int $perPage = 15, string $pageName = 'page', ?int $page = null, ?int $total = null, array $options = [])
path Возвращает элемент из коллекции с многомерными данными, используя «точечную» нотацию. Работает так же, как метод pull собственной коллекции, но без удаления элемента из коллекции.
$ collection = new Collection ([
' foo ' => [
' bar ' => [
' baz ' => ' value ' ,
]
]
]);
$ collection -> path ( ' foo.bar.baz ' ) // 'value'pluckManyВозвращает коллекцию только с указанными ключами.
$ collection = collect ([
[ ' a ' => 1 , ' b ' => 10 , ' c ' => 100 ],
[ ' a ' => 2 , ' b ' => 20 , ' c ' => 200 ],
]);
$ collection -> pluckMany ([ ' a ' , ' b ' ]);
// returns
// collect([
// ['a' => 1, 'b' => 10],
// ['a' => 2, 'b' => 20],
// ]);pluckManyValuesВозвращает коллекцию только с указанными значениями ключей.
$ collection = collect ([
[ ' a ' => 1 , ' b ' => 10 , ' c ' => 100 ],
[ ' a ' => 2 , ' b ' => 20 , ' c ' => 200 ],
]);
$ collection -> pluckMany ([ ' a ' , ' b ' ]);
// returns
// collect([
// [1, 10],
// [2, 20],
// ]);pluckToArrayВозвращает массив значений данного ключа.
$ collection = collect ([
[ ' a ' => 1 , ' b ' => 10 ],
[ ' a ' => 2 , ' b ' => 20 ],
[ ' a ' => 3 , ' b ' => 30 ]
]);
$ collection -> pluckToArray ( ' a ' ); // returns [1, 2, 3]prioritizeПереместите элементы в начало коллекции.
$ collection = collect ([
[ ' id ' => 1 ],
[ ' id ' => 2 ],
[ ' id ' => 3 ],
]);
$ collection
-> prioritize ( function ( array $ item ) {
return $ item [ ' id ' ] === 2 ;
})
-> pluck ( ' id ' )
-> toArray (); // returns [2, 1, 3]recursiveПреобразуйте массив и его дочерние элементы в коллекцию с помощью рекурсии.
collect ([
' item ' => [
' children ' => []
]
])-> recursive ();
// subsequent arrays are now collectionsВ некоторых случаях вы можете не захотеть объединять всех дочерних элементов в коллекцию. Вы можете преобразовать только до определенной глубины, указав число рекурсивному методу.
collect ([
' item ' => [
' children ' => [
' one ' => [ 1 ],
' two ' => [ 2 ]
]
]
])-> recursive ( 1 ); // Collection(['item' => Collection(['children' => ['one' => [1], 'two' => [2]]])])Это может быть полезно, если вы знаете, что на определенной глубине в этом нет необходимости или что это может сломать ваш код.
collect ([
' item ' => [
' children ' => [
' one ' => [ 1 ],
' two ' => [ 2 ]
]
]
])
-> recursive ( 1 )
-> map ( function ( $ item ) {
return $ item -> map ( function ( $ children ) {
return $ children -> mapInto (Model::class);
});
}); // Collection(['item' => Collection(['children' => ['one' => Model(), 'two' => Model()]])])
// If we do not pass a max depth we will get the error "Argument #1 ($attributes) must be of type array"rotateПоворот элементов коллекции с заданным смещением
$ collection = collect ([ 1 , 2 , 3 , 4 , 5 , 6 ]);
$ rotate = $ collection -> rotate ( 1 );
$ rotate -> toArray ();
// [2, 3, 4, 5, 6, 1]sectionBy Разбивает коллекцию на разделы, сгруппированные по заданному ключу. Похож на groupBy , но учитывает порядок элементов в коллекции и повторно использует существующие ключи.
$ collection = collect ([
[ ' name ' => ' Lesson 1 ' , ' module ' => ' Basics ' ],
[ ' name ' => ' Lesson 2 ' , ' module ' => ' Basics ' ],
[ ' name ' => ' Lesson 3 ' , ' module ' => ' Advanced ' ],
[ ' name ' => ' Lesson 4 ' , ' module ' => ' Advanced ' ],
[ ' name ' => ' Lesson 5 ' , ' module ' => ' Basics ' ],
]);
$ collection -> sectionBy ( ' module ' );
// [
// ['Basics', [
// ['name' => 'Lesson 1', 'module' => 'Basics'],
// ['name' => 'Lesson 2', 'module' => 'Basics'],
// ]],
// ['Advanced', [
// ['name' => 'Lesson 3', 'module' => 'Advanced'],
// ['name' => 'Lesson 4', 'module' => 'Advanced'],
// ]],
// ['Basics', [
// ['name' => 'Lesson 5', 'module' => 'Basics'],
// ]],
// ]; Полная подпись: sectionBy($callback, $preserveKeys, $sectionKey, $itemsKey)
simplePaginate Создайте экземпляр Paginator для элементов коллекции.
collect ( $ posts )-> simplePaginate ( 5 ); Это разбивает содержимое $posts на страницы по 5 элементов на странице. simplePaginate поддерживает довольно много опций. Подробное руководство можно найти в документации Laravel.
simplePaginate(int $perPage = 15, string $pageName = 'page', ?int $page = null, ?int $total = null, array $options = [])
Подробное руководство по нумерации страниц можно найти в документации Laravel.
sliceBefore Вырежьте значения из коллекции до того, как данный обратный вызов станет истинным. Если необязательный параметр $preserveKeys передан как true , исходные ключи сохранятся.
collect ([ 20 , 51 , 10 , 50 , 66 ])-> sliceBefore ( function ( $ item ) {
return $ item > 50 ;
}); // return collect([[20],[51, 10, 50], [66])tail Извлеките хвост из коллекции. Итак все, кроме первого элемента. Это сокращение от slice(1)->values() , но, тем не менее, очень удобное. Если необязательный параметр $preserveKeys передан как true , он сохранит ключи и вернется к slice(1) .
collect ([ 1 , 2 , 3 ])-> tail (); // return collect([2, 3])toPairsПреобразуйте коллекцию в массив с парами.
$ collection = collect ([ ' a ' => ' b ' , ' c ' => ' d ' , ' e ' => ' f ' ])-> toPairs ();
$ collection -> toArray (); // returns ['a', 'b'], ['c', 'd'], ['e', 'f']transposeЦель транспонирования — повернуть многомерный массив, превратив строки в столбцы, а столбцы в строки.
collect ([
[ ' Jane ' , ' Bob ' , ' Mary ' ],
[ ' [email protected] ' , ' [email protected] ' , ' [email protected] ' ],
[ ' Doctor ' , ' Plumber ' , ' Dentist ' ],
])-> transpose ()-> toArray ();
// [
// ['Jane', '[email protected]', 'Doctor'],
// ['Bob', '[email protected]', 'Plumber'],
// ['Mary', '[email protected]', 'Dentist'],
// ]try Если какой-либо из методов между try и catch выдает исключение, то это исключение можно обработать в catch .
collect ([ ' a ' , ' b ' , ' c ' , 1 , 2 , 3 ])
-> try ()
-> map ( fn ( $ letter ) => strtoupper ( $ letter ))
-> each ( function () {
throw new Exception ( ' Explosions in the sky ' );
})
-> catch ( function ( Exception $ exception ) {
// handle exception here
})
-> map ( function () {
// further operations can be done, if the exception wasn't rethrow in the `catch`
}); Хотя методы называются try / catch для знакомства с PHP, сама коллекция ведет себя скорее как транзакция базы данных. Поэтому при возникновении исключения возвращается исходная коллекция (до попытки).
Вы можете получить доступ к коллекции внутри catch, добавив второй параметр в свой обработчик. Вы также можете манипулировать коллекцией внутри catch, возвращая значение.
$ collection = collect ([ ' a ' , ' b ' , ' c ' , 1 , 2 , 3 ])
-> try ()
-> map ( function ( $ item ) {
throw new Exception ();
})
-> catch ( function ( Exception $ exception , $ collection ) {
return collect ([ ' d ' , ' e ' , ' f ' ]);
})
-> map ( function ( $ item ) {
return strtoupper ( $ item );
});
// ['D', 'E', 'F']validate Возвращает true если заданный $callback возвращает true для каждого элемента. Если $callback — это строка или массив, рассматривайте это как правило проверки.
collect ([ ' foo ' , ' foo ' ])-> validate ( function ( $ item ) {
return $ item === ' foo ' ;
}); // returns true
collect ([ ' [email protected] ' , ' bla ' ])-> validate ( ' email ' ); // returns false
collect ([ ' [email protected] ' , ' [email protected] ' ])-> validate ( ' email ' ); // returns trueweightedRandom Возвращает случайный элемент по весу. В этом примере у a с наибольшим шансом быть выбранным, а у предмета c наименьшим.
// pass the field name that should be used as a weight
$ randomItem = collect ([
[ ' value ' => ' a ' , ' weight ' => 30 ],
[ ' value ' => ' b ' , ' weight ' => 20 ],
[ ' value ' => ' c ' , ' weight ' => 10 ],
])-> weightedRandom ( ' weight ' );Альтернативно вы можете передать вызываемый объект, чтобы получить вес.
$ randomItem = collect ([
[ ' value ' => ' a ' , ' weight ' => 30 ],
[ ' value ' => ' b ' , ' weight ' => 20 ],
[ ' value ' => ' c ' , ' weight ' => 10 ],
])-> weightedRandom ( function ( array $ item ) {
return $ item [ ' weight ' ];
});withSizeСоздайте новую коллекцию с указанным количеством элементов.
Collection:: withSize ( 1 )-> toArray (); // return [1];
Collection:: withSize ( 5 )-> toArray (); // return [1,2,3,4,5]; Пожалуйста, посетите CHANGELOG для получения дополнительной информации о том, что изменилось за последнее время.
$ composer test Пожалуйста, смотрите ВКЛАД для получения подробной информации.
Если вы обнаружили ошибку, связанную с безопасностью, отправьте электронное письмо по адресу [email protected] вместо использования системы отслеживания проблем.
Spatie — агентство веб-дизайна, базирующееся в Антверпене, Бельгия. На нашем сайте вы найдете обзор всех наших проектов с открытым исходным кодом.
Лицензия MIT (MIT). Дополнительную информацию см. в файле лицензии.