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

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

Apr 19, 2023 am 10:09 AM

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 までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPアレイの重複排除のためのベストプラクティスは何ですか PHPアレイの重複排除のためのベストプラクティスは何ですか Mar 03, 2025 pm 04:41 PM

PHPアレイの重複排除のためのベストプラクティスは何ですか

PHPアレイの重複排除は、キー名の一意性を利用できますか? PHPアレイの重複排除は、キー名の一意性を利用できますか? Mar 03, 2025 pm 04:51 PM

PHPアレイの重複排除は、キー名の一意性を利用できますか?

最新のPHPコーディング基準とベストプラクティスは何ですか? 最新のPHPコーディング基準とベストプラクティスは何ですか? Mar 10, 2025 pm 06:16 PM

最新のPHPコーディング基準とベストプラクティスは何ですか?

PHP拡張機能とPECLを使用するにはどうすればよいですか? PHP拡張機能とPECLを使用するにはどうすればよいですか? Mar 10, 2025 pm 06:12 PM

PHP拡張機能とPECLを使用するにはどうすればよいですか?

PHPにメッセージキュー(rabbitmq、redis)を実装する方法は? PHPにメッセージキュー(rabbitmq、redis)を実装する方法は? Mar 10, 2025 pm 06:15 PM

PHPにメッセージキュー(rabbitmq、redis)を実装する方法は?

PHPアレイの重複排除は、パフォーマンスの損失について考慮する必要がありますか? PHPアレイの重複排除は、パフォーマンスの損失について考慮する必要がありますか? Mar 03, 2025 pm 04:47 PM

PHPアレイの重複排除は、パフォーマンスの損失について考慮する必要がありますか?

PHPアレイの重複排除のための最適化手法は何ですか PHPアレイの重複排除のための最適化手法は何ですか Mar 03, 2025 pm 04:50 PM

PHPアレイの重複排除のための最適化手法は何ですか

リフレクションを使用してPHPコードを分析および操作する方法は? リフレクションを使用してPHPコードを分析および操作する方法は? Mar 10, 2025 pm 06:12 PM

リフレクションを使用してPHPコードを分析および操作する方法は?

See all articles