Maison  >  Article  >  développement back-end  >  Déterminer si plusieurs éléments sont dans un tableau php

Déterminer si plusieurs éléments sont dans un tableau php

WBOY
WBOYoriginal
2023-05-11 10:23:06751parcourir

En PHP, il est très courant de déterminer si plusieurs éléments se trouvent dans un tableau. Cet article présentera comment implémenter cette fonction.

Méthode 1 : Utiliser la fonction in_array

in_array La fonction peut déterminer si un élément est dans un tableau. Sa syntaxe est la suivante :

bool in_array. ( Mixed $needle , array $haystack [, bool $strict = FALSE ] )

On peut voir que cette fonction a trois paramètres, le premier paramètre représente l'élément cible et le deuxième paramètre représente lequel tableau dans lequel il se trouve Rechercher, le troisième paramètre indique si le mode strict est activé. Par défaut, le mode strict n'est pas activé.

Par conséquent, nous pouvons utiliser la fonction in_array pour déterminer si plusieurs éléments sont dans le tableau via une boucle. L'exemple de code est le suivant :

<?php
$needleArr = ['element1', 'element2', 'element3'];
$haystackArr = ['element1', 'element3', 'element4', 'element5'];

foreach ($needleArr as $needle) {
    if (in_array($needle, $haystackArr)) {
        echo "$needle is in haystack array 
";
    } else {
        echo "$needle is NOT in haystack array 
";
    }
}

Le résultat de sortie est :

element1 is in haystack array
element2 is NOT in haystack array
element3 is in haystack array

Dans le code ci-dessus, nous définissons d'abord un tableau cible $needleArr et un tableau à rechercher $haystackArr, puis utilisez la boucle foreach pour déterminer si chaque élément de $needleArr est dans $haystackArr existe et génère finalement le résultat du jugement. $needleArr 和一个待搜索的数组 $haystackArr,然后通过 foreach 循环依次判断 $needleArr 中的每个元素是否在 $haystackArr 中存在,最终输出判断结果。

需要注意的是,in_array 函数默认不启用严格模式,即将元素转换为字符串来进行比较。如果需要启用严格模式,可将第三个参数设为 true,如下所示:

in_array($needle, $haystackArr, true);

方法二:使用 array_intersect 函数

array_intersect 函数可比较多个数组,找出它们共同的元素,具体语法如下:

array array_intersect ( array $array1 , array $array2 [, array $... ] )

该函数可比较多个数组,其中第一个参数表示第一个数组,第二个参数表示第二个数组,依次类推。

因此,我们也可以利用 array_intersect 函数,将多个数组传入其中,找出它们的交集,如果交集不为空,则说明数组中存在指定元素。示例代码如下:

<?php
$needleArr = ['element1', 'element2', 'element3'];
$haystackArr = ['element1', 'element3', 'element4', 'element5'];

$intersectArr = array_intersect($needleArr, $haystackArr);
if (!empty($intersectArr)) {
    echo "There are some elements in the haystack array 
";
} else {
    echo "No elements in the haystack array 
";
}

输出结果为:

There are some elements in the haystack array

上述代码中,我们先定义了一个目标数组 $needleArr 和一个待搜索的数组 $haystackArr,然后将它们传入 array_intersect 函数中,如果返回的交集不为空,则说明数组中存在指定元素。

需要注意的是,array_intersect 函数会保留原始数组中的键,因此它返回的数组不一定是连续的,具体取决于原始数组的键是否连续。如果需要保留键值关系,可使用 array_intersect_assoc 函数。

方法三:使用 array_diff 函数

array_diff 函数可比较多个数组,找出它们的差集,具体语法如下:

array array_diff ( array $array1 , array $array2 [, array $... ] )

该函数可比较多个数组,其中第一个参数表示第一个数组,第二个参数表示第二个数组,依次类推。

因此,我们也可以利用 array_diff 函数,将多个数组传入其中,找出它们的差集,如果差集等于原始数组,则说明数组中存在指定元素。示例代码如下:

<?php
$needleArr = ['element1', 'element2', 'element3'];
$haystackArr = ['element1', 'element3', 'element4', 'element5'];

$diffArr = array_diff($needleArr, $haystackArr);
if ($diffArr !== $needleArr) {
    echo "There are some elements in the haystack array 
";
} else {
    echo "No elements in the haystack array 
";
}

输出结果为:

There are some elements in the haystack array

上述代码中,我们先定义了一个目标数组 $needleArr 和一个待搜索的数组 $haystackArr

Il convient de noter que la fonction in_array n'active pas le mode strict par défaut, c'est-à-dire que les éléments sont convertis en chaînes à des fins de comparaison. Si vous devez activer le mode strict, vous pouvez définir le troisième paramètre sur true, comme indiqué ci-dessous :

rrreee

Méthode 2 : utilisez la fonction array_intersect #🎜🎜##🎜🎜#array_intersect la fonction peut comparer plusieurs tableaux , trouvez leurs éléments communs, la syntaxe spécifique est la suivante : #🎜🎜##🎜🎜#array array_intersect ( array $array1 , array $array2 [, array $... ] ) #🎜🎜##🎜🎜#This function can Compare plusieurs tableaux, où le premier paramètre représente le premier tableau, le deuxième paramètre représente le deuxième tableau, et ainsi de suite. #🎜🎜##🎜🎜# Par conséquent, nous pouvons également utiliser la fonction array_intersect pour passer plusieurs tableaux et trouver leur intersection. Si l'intersection n'est pas vide, cela signifie que l'élément spécifié existe dans le tableau. L'exemple de code est le suivant : #🎜🎜#rrreee#🎜🎜#Le résultat de sortie est : #🎜🎜#rrreee#🎜🎜#Dans le code ci-dessus, nous définissons d'abord un tableau cible $needleArr et un tableau à rechercher $haystackArr, puis transmettez-les dans la fonction array_intersect Si l'intersection renvoyée n'est pas vide, cela signifie que l'élément spécifié existe dans le tableau. #🎜🎜##🎜🎜#Il est à noter que la fonction array_intersect conserve les clés du tableau d'origine, donc le tableau qu'elle renvoie n'est pas forcément contigu, selon que les clés du tableau d'origine sont contiguës ou non. Si vous devez conserver les relations clé-valeur, vous pouvez utiliser la fonction array_intersect_assoc. #🎜🎜##🎜🎜#Méthode 3 : Utilisez la fonction array_diff #🎜🎜##🎜🎜#array_diff La fonction peut comparer plusieurs tableaux et trouver leurs différences. La syntaxe spécifique est la suivante : #🎜🎜##🎜🎜#array. array_diff ( array $array1 , array $array2 [, array $... ] ) #🎜🎜##🎜🎜#Cette fonction peut comparer plusieurs tableaux, où le premier paramètre représente le premier tableau et le deuxième paramètre représente le deuxième tableau, et ainsi de suite. #🎜🎜##🎜🎜# Par conséquent, nous pouvons également utiliser la fonction array_diff pour transmettre plusieurs tableaux et trouver leur différence si la différence est égale au tableau d'origine, cela signifie que l'élément spécifié existe dans le tableau. L'exemple de code est le suivant : #🎜🎜#rrreee#🎜🎜#Le résultat de sortie est : #🎜🎜#rrreee#🎜🎜#Dans le code ci-dessus, nous définissons d'abord un tableau cible $needleArr et un tableau à rechercher $haystackArr, puis transmettez-les dans la fonction array_diff Si l'ensemble de différences renvoyé n'est pas égal au tableau d'origine, cela signifie que l'élément spécifié existe dans le tableau. . #🎜🎜##🎜🎜#Il est à noter que la fonction array_diff renverra un tableau d'éléments qui existent dans le premier tableau mais pas dans les autres tableaux. Ainsi, si le premier tableau lui-même ne contient pas l’élément cible, la méthode ci-dessus n’a aucun effet. #🎜🎜#

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn