現在の位置: ホーム> 最新記事一覧> array_diff_ukey()を使用して2つの配列間のキー名の違いを知る方法は?

array_diff_ukey()を使用して2つの配列間のキー名の違いを知る方法は?

M66 2025-05-15

PHPでは、 array_diff_ukey()は非常に便利な関数であり、2つの配列のキー名を比較し、2番目の配列にない最初の配列にそれらのキー名を返すことができます。この関数は、2つの配列のキー名の違いを見つける必要がある場合、特にキー名がより複雑な場合、カスタム比較関数を通じてそれらを判断できます。

関数の紹介

array_diff_ukey()関数のプロトタイプは次のとおりです。

 array array_diff_ukey ( array $array1 , array $array2 , callable $key_compare_func )
  • $ array1 :比較される最初の配列。

  • $ array2 :最初の配列と比較される2番目の配列。

  • $ key_compare_func :2つのキー名を比較するためのカスタム比較関数。この関数は、2つの重要な名前をパラメーターとして採用し、比較の結果を表す整数を返す必要があります。

サンプルコード

具体的な例を見て、 array_diff_ukey()関数を使用する方法を示して、2つの配列間のキー名の違いを見つけましょう。

 <?php
// 2つの配列を定義します
$array1 = [
    'apple' => 1,
    'banana' => 2,
    'cherry' => 3,
];

$array2 = [
    'banana' => 4,
    'date' => 5,
    'fig' => 6,
];

// カスタム比較関数
function key_compare_func($key1, $key2) {
    // キー名が等しいかどうかを直接比較します
    return strcmp($key1, $key2);
}

// 使用 array_diff_ukey() 2つの配列のキー名の比較
$result = array_diff_ukey($array1, $array2, 'key_compare_func');

// 出力結果
print_r($result);
?>

結果出力:

 Array
(
    [apple] => 1
    [cherry] => 3
)

分析

上記の例には、2つの配列$ array1$ array2があり、 $ array1にはキー名「Apple」「バナナ」「チェリー」が含まれ、 $ array2にはキー名「バナナ」「日付」「イチジク」が含まれています。 array_diff_ukey()を呼び出すことにより、2つのキー名が同じかどうかを比較するために使用されるカスタム比較機能key_compare_funcを渡します。最後に、この2つのキー名が$ array2に表示されないため、関数はキー名「Apple」「Cherry」を含む新しい配列を$ array1に返します。

カスタム比較関数を使用します

array_diff_ukey()の力は、カスタム比較関数をサポートすることです。これは、単純なキー名の比較を実行できるだけでなく、私たち自身のニーズに応じて複雑な比較ロジックを記述できることを意味します。たとえば、キー名のケースの違いを無視する必要がある場合は、比較関数でこれを行うことができます。

例:ケースの比較を無視します

<?php
// 2つの配列を定義します
$array1 = [
    'Apple' => 1,
    'banana' => 2,
    'cherry' => 3,
];

$array2 = [
    'apple' => 4,
    'Date' => 5,
    'fig' => 6,
];

// カスタム比較関数,ケースを無視します
function case_insensitive_key_compare_func($key1, $key2) {
    return strcasecmp($key1, $key2);
}

// 使用 array_diff_ukey() 2つの配列のキー名の比較
$result = array_diff_ukey($array1, $array2, 'case_insensitive_key_compare_func');

// 出力結果
print_r($result);
?>

結果出力:

 Array
(
    [banana] => 2
    [cherry] => 3
)

この例では、 $ array1および$ array2「Apple」のキー名の「Apple」は異なる方法でケースを付けますが、 STRCASECMP関数を比較に使用するため、PHPはケースの違いを無視し、同じキー名と見なします。したがって、最終結果は、 「Apple」$ array2で見つかったと見なされるため、2つのキー名「バナナ」「チェリー」のみを返します。

要約します

array_diff_ukey()関数を使用することにより、2つの配列間のキー名の違いを簡単に見つけることができます。この関数は非常に強力であり、カスタム比較ロジックをサポートするため、さまざまな複雑な比較ニーズに対処できます。それが単純なキー名の比較であろうと、上限と小文字を無視する必要がある比較であろうと、 array_diff_ukey()は簡単に処理できます。