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のすべてのキー値ペアを直接返します。理由は次のとおりです。
array_diff_key()の原則は、キーの違いに基づいて配列を返すことです。
2番目の配列が空の場合、最初の配列のキーと比較するキーはありません。したがって、最初の配列のすべてのキーは2番目の配列にはありません。
したがって、 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()の動作は、実際の比較配列に基づいて結果を返します。