ホームページ  >  記事  >  バックエンド開発  >  PHP は配列を比較して、それらが同じかどうかを確認します

PHP は配列を比較して、それらが同じかどうかを確認します

王林
王林オリジナル
2023-05-19 20:57:38454ブラウズ

PHP では、配列が同じかどうかを比較するのは非常に一般的な操作です。通常、2 つの配列を比較して同じかどうかを確認するには、要素の順序が異なっていても、並べ替えてから 1 つずつ比較する必要があります。難しいことではありませんが、時間がかかります。

PHP には、配列が同じかどうかを比較するための簡単なメソッドが多数あります。以下に、一般的に使用されるいくつかの方法を紹介します。

  1. array_diff()

array_diff() 関数は 2 つの配列を比較し、最初の配列には存在するが 2 番目の配列要素には存在しないかどうかを返します。 2 つの配列が完全に等しい場合は、空の配列が返されます。

例は次のとおりです:

$array1 = array('a', 'b', 'c');
$array2 = array('a', 'b', 'd');

$res = array_diff($array1, $array2);

if (empty($res)) {
    echo '两个数组相等';
} else {
    echo '两个数组不相等';
}

上記のコードは、「2 つの配列は等しくない」と出力します。これは、配列 $array1 の 'c' 要素が $array2 に存在しないためです。

  1. array_diff_assoc()

array_diff_assoc() 関数は 2 つの配列を比較し、最初の配列には存在するが 2 番目の配列要素には存在しないものとキーを返します。それらの要素も比較されます。

例は次のとおりです:

$array1 = array('a' => 'apple', 'b' => 'banana', 'c' => 'cherry');
$array2 = array('a' => 'apple', 'b' => 'orange', 'c' => 'cherry');

$res = array_diff_assoc($array1, $array2);

if (empty($res)) {
    echo '两个数组相等';
} else {
    echo '两个数组不相等';
}

上記のコードは、「2 つの配列は等しくない」と出力します。これは、配列 $array1 の 'banana' 要素が $array2 には存在せず、'b' キーも異なるためです。

  1. array_diff_key()

array_diff_key() 関数は 2 つの配列を比較し、最初の配列には存在するが 2 番目の配列には存在しないキーを返します。要素。 array_diff() との違いは、array_diff_key() は配列のキーのみを比較し、キーに対応する値は比較しないことです。

例は次のとおりです:

$array1 = array('a' => 'apple', 'b' => 'banana', 'c' => 'cherry');
$array2 = array('a' => 'apple', 'b' => 'orange', 'd' => 'mango');

$res = array_diff_key($array1, $array2);

if (empty($res)) {
    echo '两个数组相等';
} else {
    echo '两个数组不相等';
}

上記のコードは、「2 つの配列は等しくない」と出力します。これは、配列 $array1 の 'c' キーが $array2 には存在せず、'd' キーも異なるためです。

  1. array_uintersect_assoc()

array_uintersect_assoc() 関数は 2 つの配列を比較し、両方の配列に存在する要素を返します。また、これらの要素の要素も比較します。 array_diff_assoc() に対応します。

例は次のとおりです:

$array1 = array('a' => 'apple', 'b' => 'banana', 'c' => 'cherry');
$array2 = array('a' => 'apple', 'b' => 'orange', 'c' => 'cherry');

function compare($a, $b) {
    if ($a === $b) {
        return 0;
    }

    return ($a < $b) ? -1 : 1;
}

$res = array_uintersect_assoc($array1, $array2, 'compare');

if (count($res) === count($array1) && count($res) === count($array2)) {
    echo '两个数组相等';
} else {
    echo '两个数组不相等';
}

上記のコードは、「2 つの配列は等しくない」と出力します。これは、配列 $array2 の「b」キーが別の値に対応しているためです。

上記の関数はすべて PHP の組み込み関数なので、簡単に比較できます。ただし、配列を比較する場合、デフォルトでは要素の型は比較されないことに注意してください。要素の型を比較す​​る必要がある場合は、array_diff_uassoc() などのユーザー定義のコールバックを持つ関数を使用し、カスタム比較関数で型の比較方法を指定できます。

PHP で配列が同じかどうかを比較することは、複雑な問題ではありません。さまざまなニーズに応じて、さまざまな方法を選択できます。

以上がPHP は配列を比較して、それらが同じかどうかを確認しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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