ホームページ  >  記事  >  バックエンド開発  >  PHP で 2 つの配列を比較して異なる値を見つける方法

PHP で 2 つの配列を比較して異なる値を見つける方法

PHPz
PHPzオリジナル
2023-04-19 10:09:371315ブラウズ

PHP では、特に 2 つの配列間の違いを分析して比較するために、配列に対して比較演算を実行することが必要になることがよくあります。この記事では、PHP を使用して 2 つの配列を比較し、異なる値を見つける方法を紹介します。

1. 2 つの配列の初期化

2 つの配列 $arr1 と $arr2 を比較する必要があると仮定します。まず、次のメソッドで初期化します:

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

2. 2 つの配列の比較メソッド

  1. array_diff()

PHP 組み込み関数array_diff() 最初の配列で、配列の残りの部分と異なる値を見つけることができます。 2 つの配列を比較できます。つまり、

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

ここで、$diff1 は $arr2 とは異なる $arr1 の値を表し、$diff2 は $ A の値を表します。 arr2 は $arr1 とは異なります。上記 2 つの配列を出力した結果は次のとおりです。

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

さらに、array_merge() を使用することもできます。 2 つの配列をマージする関数 Merge を実行し、array_unique() 関数を使用して重複を削除すると、2 つの配列の異なる値が取得されます。具体的な実装は次のとおりです。

$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 内で 1 回だけ出現する要素を検索するために使用します。最終的に、$diff_arr は 2 つの配列間の異なる値になります。

3. 2 つの配列の比較の最適化

比較対象の配列の長さが非常に長い場合、上記の方法はプログラムの効率に影響を与える可能性があります。比較速度を最適化するために、array_flip() 関数を使用して配列の 1 つを反転し、キーと値のペアが逆になってから比較します。具体的な実装方法は以下の通りです。

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

このうち、array_diff_assoc()関数は、2つの配列のキーと値が同じかどうかを比較するために使用されます。

4. 結果の出力

最後に、次のコードを通じて結果を出力できます:

echo 'arr1 与 arr2 的差异为: '.implode(',', $diff1).'<br>';
echo 'arr2 与 arr1 的差异为: '.implode(',', $diff2).'<br>';
echo '两个数组不同值为: '.implode(',',$diff_arr).'<br>';

上記のコードの出力結果は次のとおりです:

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

概要:

この記事では、PHP で 2 つの配列を比較する方法を紹介し、配列の長さが非常に長い場合に最適化します。 PHP 初心者や配列比較演算に慣れていない読者にとって、この記事が役立つことを願っています。

以上がPHP で 2 つの配列を比較して異なる値を見つける方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。