現在の位置: ホーム> 最新記事一覧> array_diff_ukey()を使用して配列キーを比較する方法

array_diff_ukey()を使用して配列キーを比較する方法

M66 2025-06-06

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()は、次のシナリオに非常に適しています。

  1. キー名のカスタム比較array_diff_ukey()は、カスタムルール(ケース、文字順など)に基づいて配列のキーを比較する必要がある場合に強力な関数を提供します。

  2. 多次元配列の処理:アレイは多次元であり、値を気にせずにキー名を比較するだけである場合は、 array_diff_ukey()を使用して処理できます。

高度なアプリケーション

2つのURL配列のキーを比較する必要があると仮定し、URLのメインドメイン部分を比較したいと考えています。 parse_url()関数を介してURLのメインドメイン名を抽出し、カスタム比較関数を使用して比較できます。