PHP は非常に人気のあるプログラミング言語であり、データ型として配列を必要とするさまざまな問題によく遭遇します。よくある質問の 1 つは、2 つの配列内の異なる項目をどうやって見つけるかということです。この記事では、この問題を解決するための 3 つの一般的な方法を紹介します。
方法 1: array_diff() 関数を使用する
PHP には、2 つの配列の異なる項目を比較するための非常に便利な関数、array_diff() が用意されています。
たとえば、$arr1 と $arr2 という 2 つの配列があります。
$arr1 = array('apple', 'banana', 'orange', 'pear'); $arr2 = array('apple', 'banana', 'kiwi', 'grape');
2 つの配列内の異なる項目を見つけたい場合は、array_diff() 関数を次のように使用できます。
$diff = array_diff($arr1, $arr2); print_r($diff);
出力結果は次のとおりです:
Array ( [2] => orange [3] => pear )
方法 2: array_diff_key() 関数を使用します
値の代わりに配列のキーを比較する場合、array_diff_key() 関数を使用して問題を解決できます。
たとえば、$arr1 と $arr2 という 2 つの配列があり、$arr1 のキーは 'a'、'b'、'c' で、$arr2 のキーは 'a' です。 'd'、'e'、2 つの配列内の異なるキーを見つけたい場合は、次のように array_diff_key() 関数を使用できます:
$arr1 = array('a'=>1, 'b'=>2, 'c'=>3); $arr2 = array('a'=>1, 'd'=>4, 'e'=>5); $diff = array_diff_key($arr1, $arr2); print_r($diff);
出力結果は次のとおりです:
Array ( [b] => 2 [c] => 3 )
方法 3: foreach ループを使用する
PHP が提供する定義済み関数を使用することに加えて、foreach ループを使用して 2 つの配列の異なる項目を比較することもできます。
たとえば、$arr1 と $arr2 という 2 つの配列があります。
$arr1 = array('apple', 'banana', 'orange', 'pear'); $arr2 = array('apple', 'banana', 'kiwi', 'grape');
2 つの配列内の異なる項目を見つけたい場合は、foreach ループを使用してそれを実現できます。次のとおり:
$diff = array(); foreach($arr1 as $val) { if (!in_array($val, $arr2)) { $diff[] = $val; } } foreach($arr2 as $val) { if (!in_array($val, $arr1)) { $diff[] = $val; } } print_r($diff);
出力結果は次のとおりです:
Array ( [2] => orange [3] => pear [4] => kiwi [5] => grape )
要約
上記は、2 つの配列内の異なる項目を見つけるためによく使用される 3 つのメソッドです。各メソッドには独自のメソッドがあります。それぞれの特性と適用可能なシナリオを実際の状況に応じて選択して使用する必要があります。どの方法を使用する場合でも、配列の比較を実行するときは、比較結果の正確性を確保するために、配列のキーと値の種類と数などの要素に注意を払う必要があります。
以上がphp 2つの配列の異なる項目の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。