Maison  >  Article  >  développement back-end  >  Comment comparer deux tableaux pour trouver des valeurs différentes en PHP

Comment comparer deux tableaux pour trouver des valeurs différentes en PHP

PHPz
PHPzoriginal
2023-04-19 10:09:371319parcourir

En PHP, il est souvent nécessaire d'effectuer des opérations de comparaison sur des tableaux, notamment pour analyser et comparer les différences entre deux tableaux. Cet article explique comment utiliser PHP pour comparer deux tableaux et trouver leurs différentes valeurs.

1. Initialisation de deux tableaux

Supposons que les deux tableaux $arr1 et $arr2 doivent être comparés. On initialise d'abord via la méthode suivante :

$arr1 = array("a", "b", "c", "d");
$arr2 = array("b", "d", "f", "g");

2. Méthode de comparaison de deux tableaux

  1. array_diff()

PHP est livré avec la fonction array_diff() pour connaître le contenu du premier array Une valeur différente du reste du tableau. On peut comparer les deux tableaux, à savoir : array_diff() 可以找出第一个数组中不同于其余数组的值。我们可以通过对两个数组进行比对,即:

$diff1 = array_diff($arr1, $arr2);
$diff2 = array_diff($arr2, $arr1);

其中 $diff1 表示 $arr1 中不同于 $arr2 的值, $diff2 表示 $arr2 中不同于 $arr1 的值。输出以上两个数组的结果如下:

$diff1 = ['a', 'c'];
$diff2 = ['f', 'g'];
  1. array_merge()

另外,我们可以使用 array_merge() 函数将两个数组合并,再使用 array_unique() 函数去重,去掉重复项,就得到了两个数组的不同值。具体实现方式如下:

$merge_arr = array_merge($arr1, $arr2);
$unique_arr = array_unique($merge_arr);
$diff_arr = array_diff($unique_arr, array_intersect($arr1, $arr2));

上述代码中, array_intersect($arr1, $arr2) 表示 $arr1 和 $arr2 的交集, array_diff() 函数用来找出 $unique_arr 中只出现了一次的元素。 最终 $diff_arr 即为两个数组之间的不同值。

三、两数组比较的优化

当要比较的数组长度很大时,上述方法可能会影响程序的效率。为了优化比较速度,我们可以使用 array_flip() 函数把其中一个数组进行翻转,使其中的键值对反过来,然后再进行比较。具体实现方法如下:

$flip_arr2 = array_flip($arr2);
$diff1 = array_diff_assoc($arr1, $flip_arr2);
$diff2 = array_diff_assoc($arr2, array_flip($arr1));

其中, array_diff_assoc()

echo 'arr1 与 arr2 的差异为: '.implode(',', $diff1).'<br>';
echo 'arr2 与 arr1 的差异为: '.implode(',', $diff2).'<br>';
echo '两个数组不同值为: '.implode(',',$diff_arr).'<br>';
$diff1 représente la valeur dans $arr1 qui est différente de $arr2, et $diff2 représente la valeur dans $arr1. arr2 Différent de la valeur de $arr1. Les résultats de la sortie des deux tableaux ci-dessus sont les suivants :

arr1 与 arr2 的差异为: a,c
arr2 与 arr1 的差异为: f,g
两个数组不同值为: a,c,f,g
    array_merge()

    De plus, nous pouvons utiliser la fonction array_merge() pour fusionner les deux tableaux, puis utilisez array_unique() La fonction déduplique, supprime les doublons et récupère les différentes valeurs des deux tableaux. L'implémentation spécifique est la suivante :

    rrreee

    Dans le code ci-dessus, array_intersect($arr1, $arr2) représente l'intersection de $arr1 et $arr2, et le array_diff() La fonction code> est utilisée pour rechercher les éléments Extract qui n’apparaissent qu’une seule fois dans $unique_arr. En fin de compte, <code>$diff_arr est la différence entre les deux tableaux.

    3. Optimisation de la comparaison de deux tableaux

    🎜Lorsque la longueur du tableau à comparer est très grande, la méthode ci-dessus peut affecter l'efficacité du programme. Afin d'optimiser la vitesse de comparaison, nous pouvons utiliser la fonction array_flip() pour retourner l'un des tableaux afin que les paires clé-valeur soient inversées, puis comparer. La méthode d'implémentation spécifique est la suivante : 🎜rrreee🎜Parmi elles, la fonction array_diff_assoc() est utilisée pour comparer si les clés et les valeurs des deux tableaux sont les mêmes. 🎜🎜4. Sortie du résultat🎜🎜Enfin, nous pouvons afficher le résultat via le code suivant :🎜rrreee🎜Le résultat de sortie du code ci-dessus est le suivant :🎜rrreee🎜Résumé :🎜🎜Cet article présente la méthode de comparaison de deux tableaux. en PHP et optimisé pour les situations où la longueur du tableau est très grande. J'espère que cela sera utile aux débutants en PHP et aux lecteurs qui ne sont pas familiers avec les opérations de comparaison de tableaux. 🎜

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