>백엔드 개발 >PHP 문제 >PHP에서 두 배열을 비교하여 서로 다른 값을 찾는 방법

PHP에서 두 배열을 비교하여 서로 다른 값을 찾는 방법

PHPz
PHPz원래의
2023-04-19 10:09:371368검색

PHP에서는 특히 두 배열 간의 차이점을 분석하고 비교하기 위해 배열에 대한 비교 작업을 수행해야 하는 경우가 많습니다. 이 기사에서는 PHP를 사용하여 두 배열을 비교하고 서로 다른 값을 찾는 방법을 소개합니다.

1. 두 배열 초기화

두 배열 $arr1과 $arr2를 비교해야 한다고 가정합니다. 먼저 다음 방법을 통해 초기화합니다.

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

2. 두 배열의 비교 방법

  1. array_diff()

PHP에는 array_diff() 함수가 함께 제공되어 첫 번째 배열에 무엇이 있는지 알아냅니다. array 배열의 나머지 부분과 다른 값입니다. 두 배열을 비교할 수 있습니다. 즉, 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는 $arr2와 다른 $arr1의 값을 나타내고 $diff2는 $의 값을 나타냅니다. arr2 $arr1의 값과 다릅니다. 위의 두 배열을 출력한 결과는 다음과 같습니다.

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

    또한 array_merge() 함수를 사용하여 병합할 수 있습니다. 두 배열을 선택한 다음 array_unique()를 사용합니다. 이 함수는 중복을 제거하고 두 배열의 서로 다른 값을 가져옵니다. 구체적인 구현은 다음과 같습니다.

    rrreee

    위 코드에서 array_intersect($arr1, $arr2)는 $arr1과 $arr2의 교차점을 나타내고, array_diff() code> 함수는 $unique_arr에 한 번만 나타나는 Extract 요소를 찾는 데 사용됩니다. 궁극적으로 $diff_arr는 두 배열의 차이입니다.

    3. 두 배열의 비교 최적화

    🎜비교할 배열의 길이가 매우 클 경우 위의 방법은 프로그램의 효율성에 영향을 줄 수 있습니다. 비교 속도를 최적화하기 위해 array_flip() 함수를 사용하여 배열 중 하나를 뒤집어 키-값 쌍이 반전되도록 한 다음 비교할 수 있습니다. 구체적인 구현 방법은 다음과 같습니다. 🎜rrreee🎜 그 중 array_diff_assoc() 함수를 사용하여 두 배열의 키와 값이 동일한지 비교합니다. 🎜🎜4. 결과 출력🎜🎜마지막으로 다음 코드를 통해 결과를 출력할 수 있습니다.🎜rrreee🎜위 코드의 출력 결과는 다음과 같습니다.🎜rrreee🎜요약:🎜🎜이 글에서는 두 배열을 비교하는 방법을 소개합니다. PHP에서 배열 길이가 매우 큰 상황에 최적화되었습니다. 배열 비교 연산에 익숙하지 않은 PHP 초보자와 독자들에게 도움이 되기를 바랍니다. 🎜

위 내용은 PHP에서 두 배열을 비교하여 서로 다른 값을 찾는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.