PHPでは、アレイ操作は非常に一般的なタスクであり、アレイを効率的に処理するのに役立つ多くの組み込み関数があります。 array_diff_key()は、キー名と違いの配列を返すことに基づいて配列を比較するのに役立つ非常に実用的な機能です。多くの場合、開発者はこの機能についていくつかの誤解を招くでしょう。これは、キー名に対応する値を比較すると信じていますが、実際には配列のみを比較します。今日は、この機能の使用を詳細に分析し、いくつかの一般的な誤解を明確にします。
array_diff_key()関数は、2つ(またはそれ以上)の配列を比較するために使用され、他の配列に表示されない最初の配列にキー名を含む要素を返します。つまり、最初の配列には存在するが、他のアレイには存在するキー名を含む違いセットを返します。
関数プロトタイプは次のとおりです。
array_diff_key(array $array1, array $array2, array ...$arrays): array
$ array1 :比較される最初の配列。
$ array2、... $ array : $ array1と比較する必要がある配列(複数の配列を渡すことができます)。
この機能をより明確に理解するには、実際のコードの例を見てみましょう。
<?php
$array1 = [
'a' => 1,
'b' => 2,
'c' => 3
];
$array2 = [
'b' => 5,
'c' => 3,
'd' => 7
];
$result = array_diff_key($array1, $array2);
print_r($result);
?>
出力の結果は次のとおりです。
Array
(
[a] => 1
)
この例では、 array_diff_key()関数は、 $ array1と$ array2のキー名を比較します。 「a」には$ array2に対応するキーがないため、キー名「a」を含む新しい配列が返されます。
array_diff_key()関数の重要な機能は、キー名のみを比較するが、キー名の対応する値を考慮しないことです。上記の例では、キー名「b」と「c」が両方の配列に表示されることがわかりますが、それらの値は異なります。 $ array1の「b 」に対応する値は2 、 $ array2の「b」に対応する値は5です。ただし、 array_diff_key()は値を比較せず、キー名のみを比較するため、 「b」も「c」も戻り結果に表示されません。
array_diff_key()は、複数の配列として複数の配列を受け入れて、複数の配列のキー名を比較することもできます。複数の配列を含む例は次のとおりです。
<?php
$array1 = [
'a' => 1,
'b' => 2,
'c' => 3
];
$array2 = [
'b' => 5,
'c' => 3,
'd' => 7
];
$array3 = [
'c' => 3,
'd' => 7,
'e' => 8
];
$result = array_diff_key($array1, $array2, $array3);
print_r($result);
?>
出力の結果は次のとおりです。
Array
(
[a] => 1
)
ここで、 array_diff_key()は、 $ array1と$ array2および$ array3のキー名を比較します。返された結果は、 「b」と「c」が他の配列に対応するキー名を見つけるため、キー名「a」のみです。
キー名のみを比較する:前述のように、 array_diff_key()はキー名のみを比較し、キー値を比較しません。
複数の配列比較:複数の配列を渡すことができます。Array_diff_key ()は、すべての配列のキー名に基づいて、最初の配列の一意のキー名を返します。
元の配列は変更されていません。この関数は元の配列を変更するのではなく、新しい配列を返します。
開発者は、 Array_diff_key()がArrayのキー値を比較すると誤って考えることがあります。たとえば、次のコード:
<?php
$array1 = [
'a' => 10,
'b' => 20,
'c' => 30
];
$array2 = [
'a' => 10,
'b' => 25,
'c' => 30
];
$result = array_diff_key($array1, $array2);
print_r($result);
?>
出力結果:
Array
(
)
この例では、array $ array1と$ array2のキー「b」の値は異なります(それぞれ20と25 )ですが、 array_diff_key()はキー名のみを比較し、キー名は「a」と「c」が両方の配列であるため、空の配列を返します。
array_diff_key()は、配列のキー名を簡単に比較して、他の配列ではなく最初の配列に存在するものを見つけるのに役立つ非常に便利なPHP関数です。覚えておいてください、それはキー名のみを比較し、キー値ではありません。この機能は、多次元配列を扱う場合、またはキー名のみでデータをフィルタリングする必要がある場合に特に役立ちます。