現在の位置: ホーム> 最新記事一覧> array_diff_key()はarray_diff_assoc()とどのように違いますか?

array_diff_key()はarray_diff_assoc()とどのように違いますか?

M66 2025-06-06

PHPでは、 array_diff_key()array_diff_assoc()はどちらも配列を比較するために使用される関数ですが、それらの比較方法は、適用可能なシナリオとは明らかに異なります。この記事では、これら2つの機能の違いを詳細に説明し、それぞれの使用シナリオについて説明します。

1。ARRAY_DIFF_KEY ()関数

array_diff_key()は、2つ以上の配列のキー名(キー)を比較するために使用され、最初の配列に存在するが他の配列には存在するキー価値ペアを返します。

文法

array_diff_key(array $array1, array $array2, array ...$arrays): array

パラメーターの説明

  • $ array1 :最初の配列(参照配列)。

  • $ array2、... $ array :最初の配列と比較される配列。

$array1 = [
    "a" => 1,
    "b" => 2,
    "c" => 3
];

$array2 = [
    "a" => 4,
    "c" => 5
];

$result = array_diff_key($array1, $array2);
print_r($result);

出力結果

Array
(
    [b] => 2
)

この例では、 array_diff_key()は2つの配列のキー名を比較します。返される結果は、 $ array1であるが$ array2ではないキー価値のペアです。

2。ARRAY_DIFF_ASSOC ()関数

array_diff_assoc()は、2つ以上の配列のキー名と値(キーと値)を比較するために使用され、最初のアレイに存在するが他のアレイには存在しないキー価値ペアを返します。 array_diff_key()とは異なり、キー名を比較するだけでなく、キーに対応する値も比較します。

文法

array_diff_assoc(array $array1, array $array2, array ...$arrays): array

パラメーターの説明

  • $ array1 :最初の配列(参照配列)。

  • $ array2、... $ array :最初の配列と比較される配列。

$array1 = [
    "a" => 1,
    "b" => 2,
    "c" => 3
];

$array2 = [
    "a" => 4,
    "c" => 3
];

$result = array_diff_assoc($array1, $array2);
print_r($result);

出力結果

Array
(
    [a] => 1
    [b] => 2
)

この例では、 array_diff_assoc()は、 $ array1$ array2のキー名と値を比較します。返される結果は、 $ array1にあるが、 $ array2でまったく同じキー名と値を持っていないキー価値のペアです。

3。array_diff_key ()array_diff_assoc()の違い

キー名とキー値

  • array_diff_key()はキー名のみを比較し、キーの対応する値を無視します。

  • array_diff_assoc()キー名と値を同時に比較します。キー名と値が異なる場合にのみ、それは異なると見なされます。

シナリオを使用します

  • array_diff_key()は、配列のキー名のみを気にするが、対応する値ではないシナリオに適しています。たとえば、特定のキーを削除するか、2つの配列の構造を比較する必要があります。

  • array_diff_assoc()は、2つの配列に異なるキー名と値を持つ要素をフィルタリングするなど、配列内のキーと値を完全に比較する必要がある場合に、一般的なシナリオに適しています。

例:URLの交換

異なるURLを含み、交換する必要がある配列があるとします。 array_diff_key()またはarray_diff_assoc()を使用して、キー値またはキー値に基づいて比較する必要があるかどうかに応じて、交換を実装できます。

 $urls = [
    "home" => "http://m66.net/home",
    "about" => "http://example.com/about",
    "contact" => "http://m66.net/contact"
];

$other_urls = [
    "home" => "http://m66.net/home",
    "about" => "http://m66.net/about",
];

$result = array_diff_key($urls, $other_urls);
print_r($result);

出力結果

Array
(
    [contact] => http://m66.net/contact
)

この例では、キー名に基づいてのみ比較され、最後に$ urlsにあるが$ other_urlsではないアイテムを見つけます。

上記は、 array_diff_key()array_diff_assoc()の違いです。お客様のニーズに応じて、配列の違いを処理するための適切な関数を選択すると、コードの効率と読みやすさが効果的に向上する可能性があります。