Laravel Collections - la function contains()
Arthur Monney
@mckenziearts
Description
On progresse dans la découverte des collections Laravel. A présent, tu vas pouvoir vérifier si une collection contient ou pas un item que tu cherches.
Allez c'est parti !
Exemple d'utilisation
Prenons un exemple simple, tu as sur ton CV plusieurs langages à mettre en valeur et tu dois associer à chacun un niveau qui reflète ton expérience avec ce langage.
Code source #1 : Vérifions que le language 'c' est présent dans notre collection
$languages = collect([ "php", "python", "javascript", "go", "c#", "java", "cobol", "basic"]); $result = $languages->contains('c');var_dump($result);
Résultat
bool(false)
Il y a bien 'c#' mais pas le langage 'c'.
Code source #2 : Vérifions à présent que le langage 'C#' est présent
$languages = collect([ "php", "python", "javascript", "go", "c#", "java", "cobol", "basic"]); $result = $languages->contains('C#');var_dump($result);
Résultat
bool(false)
Une nouvelle fois, on obtiens la réponse false. En effet, la méthode contains()
est case sensitive donc elle différencie les minuscules et les majuscules.
On peut le vérifier avec notre troisième exemple.
Code source #3 : avec 'c#'
$languages = collect([ "php", "python", "javascript", "go", "c#", "java", "cobol", "basic"]); $result = $languages->contains('c#');var_dump($result);
Résultat
bool(true)
Cette fois, tu vois que cela fonctionne !
Code source #4 : recherche par clé
$complexe = collect( [ [ "name" => "php", "python", "javascript", "go", "c#", "java", "cobol", "basic" ], [-2, 200.3, -7.8, 400.1], ["ref" => "XZ42", "price" => 200.7, "tags" => ["red", "new"]], "totalprice" => 422 ]); // recherche de la clé valeur 'ref', 'XZ42'echo "<h1>Key search 'ref','XZ42'</h1>" . PHP_EOL;$result = $complexe->contains('ref', 'XZ42');var_dump($result);// recherche de la clé valeur 'ref', 'XZ43'echo "<h1>Key search 'ref','XZ43'</h1>" . PHP_EOL;$result = $complexe->contains('ref', 'XZ43');var_dump($result);// recherche uniquement de la clé valeur 'ref'echo "<h1>Key search 'ref',''</h1>" . PHP_EOL;$result = $complexe->contains('ref', '');var_dump($result);
Résultat
Key search 'ref','XZ42'bool(true)Key search 'ref','XZ43'bool(false)Key search 'ref',''bool(true)
La valeur 'XZ42' pour la clé 'ref' existe bien, mais pas la valeur 'XZ43'. Si en deuxième paramètre tu laisses une string vide, alors 1contains()1 ira vérifier que la clé (ici 'ref') existe bien.
Code source #5 : Tu peux aussi utiliser une fonction de callback pour ta vérification
$numbers = collect([-2, 200.3, -7.8, 400.1]);// IMPORTANT : la fonction de callback ne semble fonctionner que sur unecollection plate n’en imbriquant pas d’autres.$result = $numbers->contains(function ($value, $key){ return ($value < -8 or $value > 500);});var_dump ($result);
Résultat Ici on cherchait à savoir si il y avait des valeurs inférieures à -8 et supérieures à 500. La collection utilisée n'avait pas de telle valeur, on reçoit donc false en retour.
false
Voilà tu en sais un peu plus sur cette méthode contains() qui est très utile. Dans la prochaine partie, nous allons découvrir fonction presque jumelle à celle-ci
Référence
Vous pouvez avoir tous les détails de cette fonction dans la documentation de Laravel
Arthur Monney
@mckenziearts
Fullstack Designer - Laravel & React Developer. Laravel Cameroon Organizer @laravelcm | @shopperlabs