Maison > développement back-end > Problème PHP > Comment supprimer l'intersection de deux tableaux en php

Comment supprimer l'intersection de deux tableaux en php

PHPz
Libérer: 2023-04-19 13:46:29
original
662 Les gens l'ont consulté

En programmation PHP, il est très courant de rencontrer le problème de la suppression de l'intersection de deux tableaux, notamment lorsque l'intersection de plusieurs tableaux doit être traitée. Cet article vous présentera une méthode simple et pratique pour supprimer l'intersection entre deux tableaux.

1. Description du problème

Supposons qu'il y ait respectivement deux tableaux $A et $B :

$A = array(1,2,3,4,5,6);

$B = array(4 , 5,7,8,9,10);

L'exigence est de conserver uniquement tous les éléments de $A et $B, mais de ne pas inclure l'intersection des deux tableaux, c'est-à-dire que le tableau résultat doit être :

$ Résultat = array( 1,2,3,6,7,8,9,10);

Alors comment y parvenir ? Ce qui suit vous présentera un par un.

2. Méthode 1

Tout d'abord, nous pouvons utiliser la fonction array_diff en PHP pour implémenter l'opération de différence des éléments du tableau :

$Result = array_merge(array_diff($A, $B), array_diff. ($B, $A));

Dans le code ci-dessus, array_diff($A, $B) signifie filtrer les éléments qui se trouvent dans le tableau $A mais pas dans le tableau $B array_diff($B, $); A) signifie filtrer les éléments du tableau $B mais pas dans le tableau $A. Utilisez ensuite la fonction array_merge pour combiner les deux tableaux de résultats. Cette méthode semble simple, mais en fait elle n'est pas robuste, comme le montrent les points suivants :

  1. ne peut pas gérer la situation où il y a plusieurs éléments identiques dans le tableau. Parce que lors de la fusion de deux tableaux, les mêmes éléments ont en fait été fusionnés, la duplication ne peut donc pas être supprimée.
  2. Impossible de gérer des types d'éléments incohérents. Par exemple, il y a un élément de type chaîne 'hello' dans $A, mais pas dans $B, mais nous espérons que le tableau de résultat final est l'union de tous les éléments, alors une erreur sera signalée lors de l'utilisation de la fonction array_merge.

Donc, afin de mieux éviter ces problèmes, nous devons utiliser une méthode plus robuste pour supprimer l'intersection des éléments du tableau.

3. Méthode 2

Ensuite, nous pouvons parcourir chaque élément du tableau et effectuer des opérations de déduplication et de filtrage dans le processus. Le code est le suivant :

$Result = array();

foreach($A comme $value){

if(!in_array($value, $B)){
    $Result[] = $value;
}
Copier après la connexion

}

foreach($B comme $value){

if(!in_array($value, $Result)){
    $Result[] = $value;
}
Copier après la connexion

}

Dans ce qui précède code, nous définissons d'abord un tableau vide $Result, représentant le tableau de résultat final. Utilisez ensuite deux boucles foreach pour parcourir chaque élément dans $A et $B. Pendant le processus, utilisez la fonction in_array pour déterminer si l'élément actuel apparaît dans un autre tableau, par exemple s'il apparaît dans $B. S'il n'apparaît pas auparavant, il est ajouté à $Result. Le tableau $Result final est l'union de tous les éléments des deux tableaux.

L'utilisation de cette méthode présente les avantages suivants :

  1. peut gérer la situation où il y a plusieurs éléments identiques dans le tableau, car les éléments sont ajoutés au nouveau tableau un par un.
  2. Peut gérer les types d'éléments incohérents car les valeurs des éléments sont comparées une par une via la fonction in_array.
  3. Lorsque la taille du réseau est petite, l'efficacité est plus élevée.

4. Résumé

En PHP, cet article présente deux façons de traiter les problèmes d'intersection de tableaux : en utilisant la fonction array_diff et le filtrage de traversée de boucle. Bien que les deux méthodes puissent obtenir des résultats corrects, la méthode d'utilisation du parcours de boucle est plus robuste et peut gérer davantage de cas extrêmes, ce qui mérite d'être appris.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal