Dans PHP, array_diff () et array_intersect () sont deux fonctions de fonctionnement de la table très courantes qui jouent un rôle important dans la comparaison du tableau et le calcul de la différence. Les fonctions de ces deux fonctions sont différentes, mais parfois elles peuvent être utilisées en combinaison pour améliorer l'efficacité du code. Cet article expliquera leurs différences de détail et donnera un moyen de les utiliser en combinaison.
array_diff () est utilisé pour renvoyer un tableau contenant des éléments qui existent dans le premier tableau mais qui ne sont pas dans les autres tableaux. En termes simples, array_diff () calcule le "jeu de différence" du tableau.
array_diff(array $array1, array $array2, array ...$arrays): array
$array1 = [1, 2, 3, 4];
$array2 = [3, 4, 5, 6];
$result = array_diff($array1, $array2);
print_r($result);
Sortir:
Array
(
[0] => 1
[1] => 2
)
Dans l'exemple ci-dessus, Array_Diff () renvoie des éléments dans Array1 mais pas dans Array2 , c'est-à-dire 1 et 2.
array_intersect () est utilisé pour renvoyer un tableau contenant tous les éléments qui existent dans deux tableaux ou plus. Il calcule «l'intersection» du tableau.
array_intersect(array $array1, array $array2, array ...$arrays): array
$array1 = [1, 2, 3, 4];
$array2 = [3, 4, 5, 6];
$result = array_intersect($array1, $array2);
print_r($result);
Sortir:
Array
(
[2] => 3
[3] => 4
)
Dans l'exemple ci-dessus, array_intersect () renvoie des éléments qui existent dans Array1 et Array2 , à savoir 3 et 4.
Résumons les différences entre ces deux fonctions:
array_diff () : renvoie un tableau contenant des éléments qui sont dans le premier tableau mais pas dans les autres tableaux. En d'autres termes, il calcule le "ensemble de différence".
array_intersect () : renvoie un tableau contenant tous les éléments qui existent dans deux tableaux ou plus. Il calcule "l'intersection".
D'après le résultat, l'élément renvoyé par array_diff () exclut les autres tableaux, tandis que Array_intersect () renvoie un élément commun.
Parfois, nous devons obtenir la différence et l'intersection en même temps lors du traitement des tableaux complexes. À l'heure actuelle, envisagez d'utiliser array_diff () et array_intersect () en combinaison pour améliorer l'efficacité. Par exemple, si nous devons exclure certains éléments indésirables et trouver également des éléments communs dans les intersections, la combinaison de ces deux fonctions peut être effectuée en une seule étape.
Supposons que nous ayons deux tableaux, l'un est la liste d'intérêts de l'utilisateur A et l'autre est la liste d'intérêts de l'utilisateur B. Nous devons découvrir les intérêts que A a mais B n'a pas (ensemble de différence), et également découvrir les intérêts que A et B partagent (ensemble d'intersection).
$userA = ['music', 'sports', 'travel', 'reading'];
$userB = ['sports', 'travel', 'photography'];
// ObtenirAAvoirBAucun intérêt
$diff = array_diff($userA, $userB);
print_r($diff); // Sortir: Array ( [0] => music [3] => reading )
// ObtenirAetBIntérêts communs
$intersect = array_intersect($userA, $userB);
print_r($intersect); // Sortir: Array ( [1] => sports [2] => travel )
Cette approche nous aide efficacement à séparer et à comparer les différentes parties de deux tableaux avec les mêmes parties, en réduisant la complexité.
Parfois, nous devons traiter la liste des URL et porter des jugements correspondants. array_diff () et array_intersect () peuvent également être utilisés dans ce type de scénario d'application. Par exemple, supposons que nous devons découvrir que certaines URL ne sont pas sous le nom de domaine spécifié, ou découvrir l'intersection dans la liste des deux noms de domaine.
$urlsA = ['http://example.com', 'http://m66.net/page1', 'http://m66.net/page2'];
$urlsB = ['http://m66.net/page1', 'http://m66.net/page2', 'http://example.com/page3'];
// Obtenir在ADans mais pasBInterneURL
$diffUrls = array_diff($urlsA, $urlsB);
print_r($diffUrls); // Sortir: Array ( [0] => http://example.com )
// ObtenirAetBCommunURL
$intersectUrls = array_intersect($urlsA, $urlsB);
print_r($intersectUrls); // Sortir: Array ( [1] => http://m66.net/page1 [2] => http://m66.net/page2 )
array_diff () et array_intersect () sont des fonctions très utiles lors du traitement des tableaux et sont utilisées pour calculer la différence et l'intersection respectivement.
En utilisant ces deux fonctions en combinaison, nous sommes en mesure de traiter plus efficacement les données de réseau, en particulier lorsque nous devons obtenir des pièces différentes et les mêmes parties simultanément.
Dans le développement réel, en particulier lorsqu'il s'agit d'URL, de données utilisateur, etc., l'utilisation rationnelle de ces deux fonctions peut améliorer la lisibilité et l'efficacité d'exécution du code.