現在の位置: ホーム> 最新記事一覧> array_diff_key()によってフィルタリングされたキー名を印刷する方法は?

array_diff_key()によってフィルタリングされたキー名を印刷する方法は?

M66 2025-06-06

PHPでは、 array_diff_key()は非常に実用的な関数であり、2つの配列のキー名を比較し、2番目の配列ではなく最初の配列に存在するキー名を返すために使用できます。一部のシナリオでは、フィルタリングされた配列を取得するだけでなく、フィルタリングされたキー名を取得する必要があります。この記事では、この関数を実装する方法について説明します。

array_diff_key()関数を使用します

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で非常に一般的です。フィルタリングされたキー名を保持したい場合は、この記事のメソッドを参照してこれを達成できます。