PHPでは、 array_intersect_keyとarray_diff_keyは、配列のキー名を比較するために使用される配列処理関数ですが、動作と目的は異なります。この記事では、それらの違いについて詳細に説明し、実用的な例を使用して、これら2つの機能の使用シナリオをよりよく理解するのに役立ちます。
array_intersect_key関数は、すべての配列の複数の配列のキー名と対応する値を返すために使用されます。つまり、キー名が複数の配列に存在するすべての要素を含む新しい配列を返します。
array array_intersect_key(array $array1, array $array2, array ...$arrays)
$ array1 :比較する最初の配列。
$ array2 :比較する2番目の配列。
$配列:比較のために複数の配列を選択できます。
<?php
$array1 = ['a' => 1, 'b' => 2, 'c' => 3];
$array2 = ['b' => 4, 'c' => 5, 'd' => 6];
$result = array_intersect_key($array1, $array2);
print_r($result);
?>
Array
(
[b] => 2
[c] => 3
)
この例では、 array_intersect_keyは、 $ array1と$ array2の両方に存在するキー名bとcに対応する値を返します。したがって、返された結果には、これら2つのキー名の値が含まれています。
array_diff_key関数は、他の配列ではなく、最初の配列に含まれる配列を返します。その目的は、他の配列にも存在する最初の配列からキーを削除することです。
array array_diff_key(array $array1, array $array2, array ...$arrays)
$ array1 :他の配列と比較される最初の配列。
$ array2 :比較する2番目の配列。
$配列:比較のために複数の配列を選択できます。
<?php
$array1 = ['a' => 1, 'b' => 2, 'c' => 3];
$array2 = ['b' => 4, 'c' => 5, 'd' => 6];
$result = array_diff_key($array1, $array2);
print_r($result);
?>
Array
(
[a] => 1
)
この例では、 array_diff_keyは、 $ array2に存在しないため、キーが$ array1でaという名前の要素を返します。
array_intersect_keyとarray_diff_keyの主な違いは次のとおりです。
array_intersect_keyすべての配列に存在するキー値ペアを返します。
array_diff_key最初の配列に存在するが、他の配列にはないキー値ペアを返します。
3つの配列があるとします。
$array1 = ['a' => 1, 'b' => 2, 'c' => 3];
$array2 = ['b' => 4, 'c' => 5, 'd' => 6];
$array3 = ['c' => 7, 'd' => 8];
array_intersect_key($ array1、$ array2、$ array3)は['c' => 3]を返します。これは、すべてのアレイに存在するキーであるためです。
array_diff_key($ array1、$ array2、$ array3)は[ ' a' => 1、 'b' => 2]を返します。
array_intersect_keyは、複数の配列に存在するキーを見つけ、これらのキーと対応する値を返すために使用されます。
array_diff_keyは、最初の配列ではなく、後続の配列ではなく、これらのキーとそれらの対応する値を返すキーを見つけるために使用されます。
これらの2つの機能は、特にキー名に基づいた比較とフィルタリングが必要なシナリオで、配列操作に非常に役立ちます。それらの違いを理解することで、PHPアレイをより効率的に処理できます。