現在の位置: ホーム> 最新記事一覧> Array_diff_key()は、空の配列が渡されたときに何を返しますか?

Array_diff_key()は、空の配列が渡されたときに何を返しますか?

M66 2025-06-06

PHPでは、 array_diff_key()関数を使用して2つ以上の配列を比較し、他の配列キーとは異なる最初のアレイの部分を返します。次の形式で使用されます。

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

この関数によって返される結果は次のとおりです。最初の配列のすべてのキーは、他の配列には表示されません。つまり、結果には、キーが他の配列に存在しない場合にのみ表示されます。

しかし、空の配列が渡されると、関数の動作が特別な現象を引き起こします。空の配列を渡すときに、return Value_diff_key()がどのような種類のreturn Value_diff_key()が持つかについて説明しましょう。

サンプルコード

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

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

実行結果

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

説明する

2番目のarray $ array2が空の配列である場合、 array_diff_key()は、最初のarray $ array1のすべてのキー値ペアを直接返します。理由は次のとおりです。

  1. array_diff_key()の原則は、キーの違いに基づいて配列を返すことです。

  2. 2番目の配列が空の場合、最初の配列のキーと比較するキーはありません。したがって、最初の配列のすべてのキーは2番目の配列にはありません。

  3. したがって、 array_diff_key()は、 「何とも異なる」ため、最初の配列のすべてのキー値ペアを返します。

この例から、2番目の配列が空の場合、 array_diff_key()は比較を行わず、最初の配列を直接返すことがわかります。

他の状況

複数の配列が渡された場合、空の配列があります。Array_diff_key ()の動作は、他の配列にない最初のアレイのキーをまだ返すことになります。例えば:

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

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

実行結果:

 Array
(
    [b] => 2
    [c] => 3
)

この例では、最初のarray $ array1のキー「a」は3番目のarray $ array3に存在するため、「a」は返された結果には表示されません。 「b」と「c」は$ array3には見られないため、保存されます。

要約します

  • 空の配列がarray_diff_key()に渡されると、最初の配列のすべての要素が返されます。

  • 空の配列には、他の配列と比較したキーがないため、すべてのキーが他の配列に表示されないと考えられます。

  • 複数の配列が渡され、空の配列がある場合、 array_diff_key()の動作は、実際の比較配列に基づいて結果を返します。