Laravel Tutoriel
3 min de lecture 216 vues

Laravel Collections - la function contains()

mckenziearts

Arthur Monney

@mckenziearts

Laravel Collections - la function contains()

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 une
collection 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

mckenziearts

Arthur Monney

@mckenziearts

Fullstack Designer - Laravel & React Developer. Laravel Cameroon Organizer @laravelcm | @shopperlabs

Vous aimez cet article ? Faite le savoir en partageant