Maison  >  Article  >  développement back-end  >  Comment supprimer l'intersection d'un tableau en php

Comment supprimer l'intersection d'un tableau en php

PHPz
PHPzoriginal
2023-04-18 14:07:04580parcourir

La suppression des intersections de tableaux est une tâche courante en PHP. L'intersection correspond aux valeurs communes dans deux ou plusieurs tableaux. Dans certains cas, nous pouvons avoir besoin de supprimer les intersections d'un ou plusieurs tableaux afin d'effectuer une opération ou une comparaison spécifique sur ceux-ci. Cet article présentera plusieurs méthodes, ainsi que leurs avantages et inconvénients, pour vous aider à accomplir cette tâche.

Méthode 1 : utilisez la fonction array_diff

PHP a une fonction intégrée appelée array_diff, qui peut renvoyer des éléments d'un tableau qui existent dans un autre ou plusieurs tableaux. Nous pouvons utiliser cette fonction pour supprimer l'intersection entre deux ou plusieurs tableaux.

$arr1 = array(1, 2, 3, 4, 5);
$arr2 = array(3, 4, 5, 6, 7);

$result = array_diff($arr1, $arr2);

print_r($result); // [1, 2]

Dans l'exemple ci-dessus, nous avons utilisé la fonction array_diff pour obtenir les éléments de $arr1 qui ne sont pas présents dans $arr2. Cela signifie que l'intersection a été supprimée.

Avantages :

  • Facile à utiliser, une seule ligne de code est nécessaire pour terminer la tâche.
  • C'est le moyen le plus rapide si vous avez simplement besoin de supprimer l'intersection entre deux tableaux.

Inconvénients :

  • Si vous devez supprimer l'intersection de trois tableaux ou plus, cette méthode peut ne pas convenir. Vous devez appeler array_diff plusieurs fois et le nombre de tableaux impliqués affectera les performances.
  • Si vous devez conserver le tableau d'origine, vous avez besoin d'un travail supplémentaire, comme réaffecter le premier tableau avec le deuxième tableau.

Méthode 2 : Utiliser la boucle foreach

Une autre méthode consiste à utiliser la boucle foreach. L'idée de cette méthode est de parcourir le premier tableau et de vérifier si chacun de ses éléments est présent dans d'autres tableaux. S'il est présent, l'élément est supprimé du premier tableau.

$arr1 = array(1, 2, 3, 4, 5);
$arr2 = array(3, 4, 5, 6, 7);

foreach ($arr1 as $key => $value) {
    if (in_array($value, $arr2)) {
        unset($arr1[$key]);
    }
}

print_r($arr1); // [1, 2]

Dans l'exemple ci-dessus, nous utilisons la boucle foreach pour parcourir $arr1 et utilisons la fonction in_array pour vérifier si l'élément actuel existe dans $arr2. S'il est présent, l'élément est supprimé de $arr1 à l'aide de la fonction unset.

Avantages :

  • Peut supprimer l'intersection de plusieurs tableaux.
  • Aucun travail supplémentaire n'est requis si vous devez conserver la matrice d'origine.

Inconvénients :

  • a des performances médiocres, en particulier pour les grands tableaux, car il nécessite plusieurs boucles et appels de fonction in_array.
  • Plus de travail est nécessaire si vous devez conserver les clés des éléments du tableau d'origine.

Méthode 3 : utilisez la fonction array_filter

Une autre méthode consiste à utiliser la fonction array_filter. Cette fonction filtre les éléments d'un tableau en fonction d'un ensemble de règles. Nous pouvons définir une fonction de rappel qui vérifie si chaque élément du tableau existe dans d'autres tableaux. S’il est présent, l’élément est supprimé.

$arr1 = array(1, 2, 3, 4, 5);
$arr2 = array(3, 4, 5, 6, 7);

$callback = function($value) use ($arr2) {
    return !in_array($value, $arr2);
};

$result = array_filter($arr1, $callback);

print_r($result); // [1, 2]

Dans l'exemple ci-dessus, nous utilisons la fonction array_filter et une fonction de rappel pour obtenir les éléments de $arr1 qui ne sont pas présents dans $arr2. La fonction de rappel utilise une instruction use pour lui transmettre $arr2.

Avantages :

  • L'intersection peut être supprimée de plusieurs tableaux car la fonction de rappel peut être utilisée plusieurs fois.
  • Pas de travail supplémentaire si vous devez conserver le tableau d'origine.

Inconvénients : 

  • a des performances médiocres car il nécessite plusieurs appels de fonction de rappel et des appels de fonction in_array.

Pour résumer, si vous avez seulement besoin de supprimer l'intersection entre deux tableaux, l'utilisation de la fonction array_diff est la plus rapide. Si vous devez supprimer les intersections de plusieurs tableaux, l'utilisation d'une boucle foreach ou d'une fonction array_filter est une meilleure option. En fonction de vos besoins, choisissez la méthode la plus appropriée pour réaliser la tâche.

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