php 2つの配列の異なる項目

WBOY
リリース: 2023-05-05 20:55:06
オリジナル
546 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート