Comment puis-je vérifier plusieurs valeurs, telles que:
$arg = array('foo','bar');
if(in_array('foo','bar',$arg))
C'est un exemple pour que vous compreniez un peu mieux, je sais que cela ne fonctionnera pas.
Intersectez les cibles avec la botte de foin et assurez-vous que l'intersection est exactement égale aux cibles:
$haystack = array(...);
$target = array('foo', 'bar');
if(count(array_intersect($haystack, $target)) == count($target)){
// all of $target is in $haystack
}
Notez qu'il vous suffit de vérifier que la taille de l'intersection résultante est la même que celle du tableau de valeurs cibles pour dire qu'il $haystack
s'agit d'un sur-ensemble de $target
.
Pour vérifier qu'au moins une valeur de $target
est également présente $haystack
, vous pouvez effectuer cette vérification:
if(count(array_intersect($haystack, $target)) > 0){
// at least one of $target is in $haystack
}
En tant que développeur, vous devriez probablement commencer à apprendre les opérations d'ensemble (différence, union, intersection). Vous pouvez imaginer votre tableau comme un "ensemble" et les clés que vous recherchez pour l'autre.
Vérifiez si TOUTES les aiguilles existent
Vérifiez si l'une des aiguilles existe
la source
la source
En partant de la réponse @Rok Kralj (meilleure IMO) pour vérifier si des aiguilles existent dans la botte de foin, vous pouvez utiliser à la
(bool)
place de celles-!!
ci pouvant parfois être déroutantes lors de la révision du code.https://glot.io/snippets/f7dhw4kmju
la source
La meilleure solution de IMHO Mark Elliot pour ce problème. Si vous avez besoin de faire des opérations de comparaison plus complexes entre les éléments du tableau ET que vous êtes sur PHP 5.3, vous pouvez également penser à quelque chose comme ceci:
Cela repose sur une fermeture; La fonction de comparaison peut devenir beaucoup plus puissante. Bonne chance!
la source
array_intersect () renvoie un tableau contenant toutes les valeurs de array1 présentes dans tous les arguments. Notez que les clés sont conservées.
Renvoie un tableau contenant toutes les valeurs de array1 dont les valeurs existent dans tous les paramètres.
empty () - Détermine si une variable est vide
Renvoie FALSE si var existe et a une valeur non vide et non nulle. Sinon, retourne TRUE.
la source