ホームページ > バックエンド開発 > PHPの問題 > PHPで2つの配列の違いを見つける

PHPで2つの配列の違いを見つける

WBOY
リリース: 2023-05-11 10:00:07
オリジナル
2129 人が閲覧しました

PHP プログラミングでは、交差、和集合、補数などの配列に対する演算を実行する必要があることがよくあります。一般的に使用される操作の 1 つは、2 つの配列間の差異を見つけることです。つまり、一方の配列に存在する要素をもう一方の配列で削除して差異を取得します。この記事では、2 つの配列の差分を求める 2 つの異なる方法を紹介します。

方法 1: array_diff() 関数を使用する

array_diff() 関数は、2 つ以上の配列間の差異を比較し、結果を返すために使用できる PHP の組み込み関数です。差分配列。この関数の形式は次のとおりです。

array array_diff ( array $array1 , array $array2 [, array $... ] )
ログイン後にコピー

このうち、$array1 と $array2 は比較対象の 2 つの配列であり、$... は比較のために複数の配列パラメーターのセットを渡すことができることを示します。この関数は、$array1 に存在するが他のパラメーター配列には存在しないすべての要素で構成される連想配列を返します。

例を見てみましょう:

$array1 = array("a", "b", "c", "d", "e");
$array2 = array("b", "d", "f");
$result = array_diff($array1, $array2);
print_r($result);
ログイン後にコピー

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

Array
(
    [0] => a
    [2] => c
    [4] => e
)
ログイン後にコピー
ログイン後にコピー

ご覧のとおり、この関数は、 2 つの配列 [a、c、e]。

方法 2: foreach ループを使用する

組み込み関数の使用に加えて、foreach ループを使用して 2 つの配列間の違いを見つけることもできます。このメソッドの実装では、検出する差分セットの配列 1 を走査し、配列 2 で循環比較を実行します。配列 1 の要素が配列 2 に存在する場合は、配列 2 の要素を削除します。そうでない場合は、要素が格納されます。配列 2. を結果配列に格納します。

ケースを見てみましょう:

$array1 = array("a", "b", "c", "d", "e");
$array2 = array("b", "d", "f");
$result = array();
foreach ($array1 as $value) {
    $exist = false;
    foreach ($array2 as $key => $val) {
        if ($val == $value) {
            unset($array2[$key]);
            $exist = true;
            break;
        }
    }
    if (!$exist) {
        $result[] = $value;
    }
}
print_r($result);
ログイン後にコピー

上記のコードによって出力される結果は、方法 1 と同じです:

Array
(
    [0] => a
    [2] => c
    [4] => e
)
ログイン後にコピー
ログイン後にコピー

ご覧のとおり、このメソッドは次のことを実現します。一連の関数の二重ループによる違い。第 1 レベルのループでは、配列 1 の各要素が走査され、第 2 レベルのループでは、配列 2 の各要素が走査され、同じ要素が unset 関数によって削除され、フラグ ビット $exist が使用されます。同じ要素が存在するかどうかを記録します。最後に、配列 2 にない要素は結果配列に格納されます。

概要

PHP プログラミングでは、2 つの配列間の違いを見つけることは一般的な操作です。この記事では、差分セットを見つける 2 つの方法を紹介します。1 つは組み込み関数 array_diff() を使用する方法、もう 1 つは二重ループを通じて実装する方法です。どの方法を使用しても、配列の差分セットは簡単に取得できます。

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

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