Dieses Repository enthält einige nützliche Sammlungsmakros.
Spatie ist eine Webdesign-Agentur mit Sitz in Antwerpen, Belgien. Eine Übersicht aller unserer Open-Source-Projekte finden Sie auf unserer Website.
Wir investieren viele Ressourcen in die Erstellung erstklassiger Open-Source-Pakete. Sie können uns unterstützen, indem Sie eines unserer kostenpflichtigen Produkte kaufen.
Wir freuen uns sehr, dass Sie uns eine Postkarte aus Ihrer Heimatstadt schicken und erwähnen, welches unserer Pakete Sie verwenden. Unsere Adresse finden Sie auf unserer Kontaktseite. Wir veröffentlichen alle erhaltenen Postkarten auf unserer virtuellen Postkartenwand.
Sie können das Paket über Composer abrufen:
composer require spatie/laravel-collection-macrosDas Paket registriert sich automatisch.
afteratsecondthirdfourthfifthsixthseventheighthninthtenthgetNthbeforecatchchunkBycollectBycontainsAnycontainsAlleachConsextractfilterMapfirstOrFailfirstOrPushfromPairsgetCaseInsensitiveglobgroupByModelhasCaseInsensitiveheadififAnyifEmptyinsertAfterinsertAfterKeyinsertAtinsertBeforeinsertBeforeKeynonepaginatepathpluckManypluckManyValuespluckToArrayprioritizerecursiverotatesectionBysimplePaginatesliceBeforetailtrytoPairstransposevalidateweightedRandomwithSizeafterHolen Sie sich das nächste Element aus der Sammlung.
$ 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;Sie können auch einen zweiten Parameter übergeben, der als Fallback verwendet wird.
$ collection = collect ([ 1 , 2 , 3 ]);
$ currentItem = 3 ;
$ collection -> after ( $ currentItem , $ collection -> first ()); // return 1;atRufen Sie ein Element an einem Index ab.
$ data = new Collection ([ 1 , 2 , 3 ]);
$ data -> at ( 0 ); // 1
$ data -> at ( 1 ); // 2
$ data -> at (- 1 ); // 3secondElement am zweiten Index abrufen.
$ data = new Collection ([ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ]);
$ data -> second (); // 2thirdElement am dritten Index abrufen.
$ data = new Collection ([ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ]);
$ data -> third (); // 3fourthElement am vierten Index abrufen.
$ data = new Collection ([ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ]);
$ data -> fourth (); // 4fifthElement am fünften Index abrufen.
$ data = new Collection ([ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ]);
$ data -> fifth (); // 5sixthElement am sechsten Index abrufen.
$ data = new Collection ([ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ]);
$ data -> sixth (); // 6seventhElement am siebten Index abrufen.
$ data = new Collection ([ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ]);
$ data -> seventh (); // 7eighthElement am achten Index abrufen.
$ data = new Collection ([ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ]);
$ data -> eighth (); // 8ninthElement am neunten Index abrufen.
$ data = new Collection ([ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ]);
$ data -> ninth (); // 9tenthElement am zehnten Index abrufen.
$ data = new Collection ([ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ]);
$ data -> tenth (); // 10getNthElement beim n-ten Element abrufen.
$ data = new Collection ([ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 ]);
$ data -> getNth ( 11 ); // 11beforeHolen Sie sich das vorherige Element aus der Sammlung.
$ 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;Sie können auch einen zweiten Parameter übergeben, der als Fallback verwendet wird.
$ collection = collect ([ 1 , 2 , 3 ]);
$ currentItem = 1 ;
$ collection -> before ( $ currentItem , $ collection -> last ()); // return 3;catch Siehe Try
chunkBy Unterteilt die Werte aus einer Sammlung in Gruppen, solange der angegebene Rückruf wahr ist. Wenn der optionale Parameter $preserveKeys als true übergeben wird, bleiben die ursprünglichen Schlüssel erhalten.
collect ([ ' A ' , ' A ' , ' B ' , ' A ' ])-> chunkBy ( function ( $ item ) {
return $ item == ' A ' ;
}); // return Collection([['A', 'A'],['B'], ['A']])collectByHolen Sie sich einen Gegenstand mit einem bestimmten Schlüssel und sammeln Sie ihn ein.
$ collection = collect ([
' foo ' => [ 1 , 2 , 3 ],
' bar ' => [ 4 , 5 , 6 ],
]);
$ collection -> collectBy ( ' foo ' ); // Collection([1, 2, 3])Sie können auch einen zweiten Parameter übergeben, der als Fallback verwendet wird.
$ collection = collect ([
' foo ' => [ 1 , 2 , 3 ],
' bar ' => [ 4 , 5 , 6 ],
]);
$ collection -> collectBy ( ' baz ' , [ ' Nope ' ]); // Collection(['Nope'])containsAny Gibt true zurück, wenn einer oder mehrere der angegebenen Werte in der Sammlung vorhanden sind.
$ 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 Gibt true zurück, wenn alle angegebenen Werte in der Sammlung vorhanden sind.
$ 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 Rufen Sie die folgenden aufeinanderfolgenden Nachbarn in einer Sammlung aus einer bestimmten Blockgröße ab. Wenn der optionale Parameter $preserveKeys als true übergeben wird, bleiben die ursprünglichen Schlüssel erhalten.
collect ([ 1 , 2 , 3 , 4 ])-> eachCons ( 2 ); // return collect([[1, 2], [2, 3], [3, 4]])extract Extrahieren Sie Schlüssel aus einer Sammlung. Dies ist sehr ähnlich zu only , mit zwei wesentlichen Unterschieden:
extract gibt ein Array von Werten zurück, kein assoziatives Arraynull aufgefüllt, anstatt ihn wegzulassen extract ist nützlich, wenn list() -Syntax von PHP 7.1 verwendet wird.
[ $ name , $ role ] = collect ( $ user )-> extract ( ' name ' , ' role.name ' );filterMapOrdnen Sie eine Sammlung zu und entfernen Sie falsche Werte auf einmal.
$ 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 Holen Sie sich den ersten Artikel. Löst SpatieCollectionMacrosExceptionsCollectionItemNotFound aus, wenn das Element nicht gefunden wurde.
$ collection = collect ([ 1 , 2 , 3 , 4 , 5 , 6 ])-> firstOrFail ();
$ collection -> toArray (); // returns [1]
collect ([])-> firstOrFail (); // throws SpatieCollectionMacrosExceptionsCollectionItemNotFoundfirstOrPushRufen Sie das erste Element mit dem als ersten Parameter angegebenen Callable ab. Wenn kein Wert vorhanden ist, übertragen Sie den Wert des zweiten Parameters in die Sammlung. Als zweiten Parameter können Sie ein Callable übergeben.
Diese Methode ist sehr nützlich, wenn Sie mit zwischengespeicherten Klasseneigenschaften arbeiten, bei denen Sie einen von einer API oder einer rechenintensiven Funktion abgerufenen Wert in einer Sammlung speichern möchten, um ihn mehrmals zu verwenden.
$ collection = collect ([ 1 , 2 , 3 ])-> firstOrPush ( fn ( $ item ) => $ item === 4 , 4 );
$ collection -> toArray (); // returns [1, 2, 3, 4]Gelegentlich möchten Sie die Zielsammlung angeben, an die gepusht werden soll. Sie können dies als dritten Parameter übergeben.
$ collection = collect ([ 1 , 2 , 3 ]);
$ collection -> filter ()-> firstOrPush ( fn ( $ item ) => $ item === 4 , 4 , $ collection );
$ collection -> toArray (); // returns [1, 2, 3, 4]fromPairsWandelt eine Sammlung in ein assoziatives Array-Form-Sammlungselement um.
$ collection = collect ([[ ' a ' , ' b ' ], [ ' c ' , ' d ' ], [ ' e ' , ' f ' ]])-> fromPairs ();
$ collection -> toArray (); // returns ['a' => 'b', 'c' => 'd', 'e' => 'f']getCaseInsensitiveErmitteln Sie den Wert eines bestimmten Schlüssels.
Wenn der Schlüssel eine Zeichenfolge ist, suchen wir mithilfe eines Vergleichs ohne Berücksichtigung der Groß- und Kleinschreibung nach dem Schlüssel.
$ collection = collect ([
' foo ' => ' bar ' ,
]);
$ collection -> getCaseInsensitive ( ' Foo ' ); // returns 'bar';glob Gibt eine Sammlung eines glob() -Ergebnisses zurück.
Collection:: glob ( ' config/*.php ' );groupByModel Ähnlich wie groupBy , gruppiert die Sammlung jedoch nach einem Eloquent-Modell. Da der Schlüssel ein Objekt und keine Ganzzahl oder Zeichenfolge ist, werden die Ergebnisse in separate Arrays aufgeteilt.
$ posts -> groupByModel ( ' category ' );
// [
// [$categoryA, [/*...$posts*/]],
// [$categoryB, [/*...$posts*/]],
// ]; Vollständige Signatur: groupByModel($callback, $preserveKeys, $modelKey, $itemsKey)
hasCaseInsensitiveStellen Sie fest, ob die Sammlung einen Schlüssel mit einem bestimmten Namen enthält.
Wenn $key eine Zeichenfolge ist, suchen wir mithilfe eines Vergleichs ohne Berücksichtigung der Groß- und Kleinschreibung nach dem Schlüssel.
$ collection = collect ([
' foo ' => ' bar ' ,
]);
$ collection -> hasCaseInsensitive ( ' Foo ' ); // returns true;headRuft das erste Element aus der Sammlung ab.
$ collection = collect ([ 1 , 2 , 3 ]);
$ collection -> head (); // return 1
$ collection = collect ([]);
$ collection -> head (); // return nullif Das if Makro kann dabei helfen, Sammlungsketten zu verzweigen. Dies ist die Signatur dieses Makros:
if (mixed $ if , mixed $ then = null , mixed $ else = null ): mixed $if , $then und $else können einen beliebigen Typ haben. Wenn einem dieser Parameter ein Abschluss übergeben wird, wird dieser Abschluss ausgeführt und das Makro verwendet seine Ergebnisse.
Wenn $if einen wahren Wert zurückgibt, wird $then zurückgegeben, andernfalls wird $else zurückgegeben.
Hier einige Beispiele:
collect ()-> if ( true , then: true , else: false ); // returns true
collect ()-> if ( false , then: true , else: false ); // returns false Wenn ein Abschluss an $if , $then oder $else übergeben wird, wird die gesamte Sammlung als Argument an diesen Abschluss übergeben.
// 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 ))
);ifAnyFührt den übergebenen Callable aus, wenn die Sammlung nicht leer ist. Die gesamte Sammlung wird zurückgegeben.
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 ' ;
});ifEmptyFührt das übergebene Callable aus, wenn die Sammlung leer ist. Die gesamte Sammlung wird zurückgegeben.
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 ' ;
});insertAfterFügt ein Element nach dem ersten Vorkommen eines bestimmten Elements ein und gibt die aktualisierte Collection-Instanz zurück. Optional kann ein Schlüssel angegeben werden.
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]insertAfterKeyFügt ein Element nach einem bestimmten Schlüssel ein und gibt die aktualisierte Collection-Instanz zurück. Optional kann ein Schlüssel für den neuen Artikel angegeben werden.
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]insertAtFügt ein Element an einem bestimmten Index ein und gibt die aktualisierte Collection-Instanz zurück. Optional kann ein Schlüssel angegeben werden.
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]insertBeforeFügt ein Element vor dem ersten Vorkommen eines bestimmten Elements ein und gibt die aktualisierte Collection-Instanz zurück. Optional kann ein Schlüssel angegeben werden.
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]insertBeforeKeyFügt ein Element vor einem bestimmten Schlüssel ein und gibt die aktualisierte Collection-Instanz zurück. Optional kann ein Schlüssel für den neuen Artikel angegeben werden.
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 Überprüft, ob eine Sammlung keine Vorkommen eines bestimmten Elements, Schlüssel-Wert-Paares oder bestandenen Wahrheitstests enthält. Die Funktion akzeptiert dieselben Parameter wie die Sammlungsmethode 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 Erstellen Sie eine LengthAwarePaginator -Instanz für die Elemente in der Sammlung.
collect ( $ posts )-> paginate ( 5 ); Dadurch wird der Inhalt von $posts mit 5 Elementen pro Seite paginiert. paginate bietet eine ganze Reihe von Optionen. Eine ausführliche Anleitung finden Sie in der Laravel-Dokumentation.
paginate(int $perPage = 15, string $pageName = 'page', ?int $page = null, ?int $total = null, array $options = [])
path Gibt ein Element aus der Sammlung mit mehrdimensionalen Daten unter Verwendung der „Punkt“-Notation zurück. Funktioniert auf die gleiche Weise wie die pull -Methode der nativen Sammlung, jedoch ohne das Entfernen eines Elements aus der Sammlung.
$ collection = new Collection ([
' foo ' => [
' bar ' => [
' baz ' => ' value ' ,
]
]
]);
$ collection -> path ( ' foo.bar.baz ' ) // 'value'pluckManyGibt eine Sammlung nur mit den angegebenen Schlüsseln zurück.
$ 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],
// ]);pluckManyValuesGibt eine Sammlung nur mit den Werten der angegebenen Schlüssel zurück.
$ collection = collect ([
[ ' a ' => 1 , ' b ' => 10 , ' c ' => 100 ],
[ ' a ' => 2 , ' b ' => 20 , ' c ' => 200 ],
]);
$ collection -> pluckMany ([ ' a ' , ' b ' ]);
// returns
// collect([
// [1, 10],
// [2, 20],
// ]);pluckToArrayGibt ein Array von Werten eines bestimmten Schlüssels zurück.
$ collection = collect ([
[ ' a ' => 1 , ' b ' => 10 ],
[ ' a ' => 2 , ' b ' => 20 ],
[ ' a ' => 3 , ' b ' => 30 ]
]);
$ collection -> pluckToArray ( ' a ' ); // returns [1, 2, 3]prioritizeElemente an den Anfang der Sammlung verschieben.
$ collection = collect ([
[ ' id ' => 1 ],
[ ' id ' => 2 ],
[ ' id ' => 3 ],
]);
$ collection
-> prioritize ( function ( array $ item ) {
return $ item [ ' id ' ] === 2 ;
})
-> pluck ( ' id ' )
-> toArray (); // returns [2, 1, 3]recursiveKonvertieren Sie ein Array und seine untergeordneten Elemente mithilfe der Rekursion in eine Sammlung.
collect ([
' item ' => [
' children ' => []
]
])-> recursive ();
// subsequent arrays are now collectionsIn manchen Fällen möchten Sie möglicherweise nicht alle untergeordneten Elemente in eine Sammlung umwandeln. Sie können die Konvertierung nur bis zu einer bestimmten Tiefe durchführen, indem Sie der rekursiven Methode eine Zahl bereitstellen.
collect ([
' item ' => [
' children ' => [
' one ' => [ 1 ],
' two ' => [ 2 ]
]
]
])-> recursive ( 1 ); // Collection(['item' => Collection(['children' => ['one' => [1], 'two' => [2]]])])Dies kann nützlich sein, wenn Sie wissen, dass dies ab einer bestimmten Tiefe nicht mehr erforderlich ist oder Ihren Code beschädigen könnte.
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"rotateDrehen Sie die Elemente in der Sammlung mit dem angegebenen Versatz
$ collection = collect ([ 1 , 2 , 3 , 4 , 5 , 6 ]);
$ rotate = $ collection -> rotate ( 1 );
$ rotate -> toArray ();
// [2, 3, 4, 5, 6, 1]sectionBy Teilt eine Sammlung in Abschnitte auf, die nach einem bestimmten Schlüssel gruppiert sind. Ähnlich wie groupBy respektiert jedoch die Reihenfolge der Elemente in der Sammlung und verwendet vorhandene Schlüssel wieder.
$ 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'],
// ]],
// ]; Vollständige Signatur: sectionBy($callback, $preserveKeys, $sectionKey, $itemsKey)
simplePaginate Erstellen Sie eine Paginator -Instanz für die Elemente in der Sammlung.
collect ( $ posts )-> simplePaginate ( 5 ); Dadurch wird der Inhalt von $posts mit 5 Elementen pro Seite paginiert. simplePaginate bietet eine ganze Reihe von Optionen. Eine ausführliche Anleitung finden Sie in den Laravel-Dokumenten.
simplePaginate(int $perPage = 15, string $pageName = 'page', ?int $page = null, ?int $total = null, array $options = [])
Eine ausführliche Anleitung zur Paginierung finden Sie in den Laravel-Dokumenten.
sliceBefore Schneiden Sie die Werte aus einer Sammlung heraus, bevor der angegebene Rückruf wahr ist. Wenn der optionale Parameter $preserveKeys als true übergeben wird, bleiben die ursprünglichen Schlüssel erhalten.
collect ([ 20 , 51 , 10 , 50 , 66 ])-> sliceBefore ( function ( $ item ) {
return $ item > 50 ;
}); // return collect([[20],[51, 10, 50], [66])tail Extrahieren Sie den Schwanz aus einer Sammlung. Also alles bis auf das erste Element. Es ist eine Abkürzung für slice(1)->values() , aber dennoch sehr praktisch. Wenn der optionale Parameter $preserveKeys als true übergeben wird, bleiben die Schlüssel erhalten und es wird auf slice(1) zurückgegriffen.
collect ([ 1 , 2 , 3 ])-> tail (); // return collect([2, 3])toPairsVerwandeln Sie eine Sammlung in ein Array mit Paaren.
$ collection = collect ([ ' a ' => ' b ' , ' c ' => ' d ' , ' e ' => ' f ' ])-> toPairs ();
$ collection -> toArray (); // returns ['a', 'b'], ['c', 'd'], ['e', 'f']transposeDas Ziel der Transponierung besteht darin, ein mehrdimensionales Array zu drehen und dabei die Zeilen in Spalten und die Spalten in Zeilen umzuwandeln.
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 Wenn eine der Methoden zwischen try und catch eine Ausnahme auslöst, kann die Ausnahme in catch behandelt werden.
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`
}); Während die Methoden aus Gründen der Vertrautheit mit PHP den Namen try / catch tragen, verhält sich die Sammlung selbst eher wie eine Datenbanktransaktion. Wenn also eine Ausnahme ausgelöst wird, wird die ursprüngliche Sammlung (vor dem Versuch) zurückgegeben.
Sie können innerhalb von Catch Zugriff auf die Sammlung erhalten, indem Sie Ihrem Handler einen zweiten Parameter hinzufügen. Sie können die Sammlung auch innerhalb von Catch manipulieren, indem Sie einen Wert zurückgeben.
$ 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 Gibt true zurück, wenn der angegebene $callback für jedes Element „true“ zurückgibt. Wenn $callback ein String oder ein Array ist, betrachten Sie es als Validierungsregel.
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 Gibt ein zufälliges Element nach Gewicht zurück. In diesem Beispiel hat der Artikel mit a die größte Chance, ausgewählt zu werden, und der Artikel mit c die geringste.
// 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 ' );Alternativ können Sie einen Callable übergeben, um das Gewicht zu erhalten.
$ randomItem = collect ([
[ ' value ' => ' a ' , ' weight ' => 30 ],
[ ' value ' => ' b ' , ' weight ' => 20 ],
[ ' value ' => ' c ' , ' weight ' => 10 ],
])-> weightedRandom ( function ( array $ item ) {
return $ item [ ' weight ' ];
});withSizeErstellen Sie eine neue Sammlung mit der angegebenen Anzahl an Artikeln.
Collection:: withSize ( 1 )-> toArray (); // return [1];
Collection:: withSize ( 5 )-> toArray (); // return [1,2,3,4,5]; Weitere Informationen zu den letzten Änderungen finden Sie im CHANGELOG.
$ composer test Weitere Informationen finden Sie unter BEITRAGEN.
Wenn Sie einen Sicherheitsfehler gefunden haben, senden Sie bitte eine E-Mail an [email protected], anstatt den Issue-Tracker zu verwenden.
Spatie ist eine Webdesign-Agentur mit Sitz in Antwerpen, Belgien. Eine Übersicht aller unserer Open-Source-Projekte finden Sie auf unserer Website.
Die MIT-Lizenz (MIT). Weitere Informationen finden Sie in der Lizenzdatei.