PHPでは、 array_diff_ukey()は非常に便利な関数であり、2つの配列のキー名の違いを比較するために使用できます。 arrayの値のみを比較するarray_diff()関数とは異なり、 array_diff_ukey()を使用すると、アレイのキーをカスタム比較関数を介して比較できます。この関数は、多次元配列が処理されるシナリオや、複雑なルールに従ってキー名を比較する必要があるシナリオに非常に適しています。
array_diff_ukey(array $array1, array $array2, callable $key_compare_func): array
$ array1 :最初の配列。
$ array2 :2番目の配列。
$ key_compare_func :2つのキーを比較するコールバック関数。返品値が0未満の場合、 $ array1のキーが$ array2のキーよりも小さいことを意味します。戻り値が0より大きい場合、 $ array1のキーが$ array2のキーよりも大きいことを意味します。戻り値が0に等しい場合、2つのキーが等しいことを意味します。
$ array1ではなく、 $ array2では要素のキー名と値を含む配列を返します。
Array_diff_ukey()を使用した簡単な例を次に示し、2つの配列間のキー名の違いを比較します。
<?php
// 最初の配列
$array1 = [
'apple' => 100,
'banana' => 200,
'orange' => 300,
];
// 2番目の配列
$array2 = [
'banana' => 200,
'grape' => 400,
'kiwi' => 500,
];
// カスタムキー比較関数
function compare_keys($key1, $key2) {
return strcmp($key1, $key2); // 文字列を使用してキー名を比較します
}
// 使用 array_diff_ukey 2つの配列のキー名の違いの比較
$result = array_diff_ukey($array1, $array2, 'compare_keys');
// 結果を印刷します
print_r($result);
?>
Array
(
[apple] => 100
[orange] => 300
)
上記の例では、 array_diff_ukey()関数は、2つのarray $ array1と$ array2のキー名を比較します。この例では、 $ array1の「Apple」と「Orange」キーは$ array2に存在しないため、返された結果に保持されます。 「バナナ」キーは両方の配列に含まれているため、除外されます。
array_diff_ukey()は、次のシナリオに非常に適しています。
キー名のカスタム比較: array_diff_ukey()は、カスタムルール(ケース、文字順など)に基づいて配列のキーを比較する必要がある場合に強力な関数を提供します。
多次元配列の処理:アレイは多次元であり、値を気にせずにキー名を比較するだけである場合は、 array_diff_ukey()を使用して処理できます。
2つのURL配列のキーを比較する必要があると仮定し、URLのメインドメイン部分を比較したいと考えています。 parse_url()関数を介してURLのメインドメイン名を抽出し、カスタム比較関数を使用して比較できます。