PHPでは、 array_diff_key()は非常に実用的な関数であり、2つの配列のキー名を比較し、2番目の配列ではなく最初の配列に存在するキー名を返すために使用できます。一部のシナリオでは、フィルタリングされた配列を取得するだけでなく、フィルタリングされたキー名を取得する必要があります。この記事では、この関数を実装する方法について説明します。
array_diff_key()関数の基本的な使用法は次のとおりです。
$array1 = [
'a' => 1,
'b' => 2,
'c' => 3,
'd' => 4
];
$array2 = [
'b' => 5,
'd' => 6
];
$result = array_diff_key($array1, $array2);
print_r($result);
出力結果:
Array
(
[a] => 1
[c] => 3
)
上記の例に示すように、 array_diff_key()は、 $ array2に表示されない$ array1のキー値ペアを返します。ただし、フィルタリングされたキー名、つまり$ array1に存在するが$ array2に表示されない場合は、追加の処理を行う必要があります。
フィルタリングされたキー名を取得するために、最初にarray_diff_key()を使用して結果を取得し、次に2つの配列のキー名を比較して削除されたキー名を見つけることができます。
$array1 = [
'a' => 1,
'b' => 2,
'c' => 3,
'd' => 4
];
$array2 = [
'b' => 5,
'd' => 6
];
// フィルタリングされた配列を取得します
$result = array_diff_key($array1, $array2);
// フィルタリングされたキー名を取得します
$filteredKeys = array_keys($array1);
$remainingKeys = array_keys($result);
$removedKeys = array_diff($filteredKeys, $remainingKeys);
echo "フィルタリングされたキー名: ";
print_r($removedKeys);
出力結果:
フィルタリングされたキー名: Array
(
[0] => a
[1] => c
)
このようにして、 array_diff_key()を使用するときに除外されたキー名を印刷できます。特定の方法は、最初に$ array1のすべてのキー名を取得し、次にarray_diff()を使用して$ resultにないキー名を見つけ、最後にフィルタリングされたキー名を取得することです。
上記の例を介して、 array_diff_key()を使用して配列のキー名を比較し、キー名をフィルタリングする方法を確認できます。この操作は、特に配列データのクリーニングと比較の場合、PHPで非常に一般的です。フィルタリングされたキー名を保持したい場合は、この記事のメソッドを参照してこれを達成できます。