PHPでは、 Array_diff_uassoc関数を使用して2つの配列を比較し、2番目の配列とは異なる最初の配列のすべての部分を返します。この関数の主な機能は、キーを配列と比較するためのカスタム比較関数を提供できることです。カスタム比較関数を組み合わせることにより、高度と小文字を無視する重要な比較を実装できます。
この記事では、 array_diff_uassoc関数を使用して、ケースを無視するキー比較を実装する方法を紹介します。
array_diff_uassoc関数の構文は次のとおりです。
array_diff_uassoc(array $array1, array $array2, callable $key_compare_func): array
$ array1および$ array2 :比較する2つの配列。
$ key_compare_func :2つの配列キーを比較するためのカスタムキー比較関数。
この関数は、$ array1に存在するが、 $ array2には存在するキー価値ペアを含む配列を返します。
ケースを無視するキー比較を実装するには、キーを均一な小文字または大文字に変換して比較するカスタム比較関数を記述する必要があります。実装のコード例は次のとおりです。
<?php
// カスタムキー比較関数:ケースを無視します
function case_insensitive_key_compare($key1, $key2) {
return strcasecmp($key1, $key2);
}
// 2つの配列を定義します
$array1 = [
"first" => "apple",
"second" => "banana",
"Third" => "cherry"
];
$array2 = [
"FIRST" => "apple",
"second" => "grape",
"third" => "kiwi"
];
// 使用 array_diff_uassoc 2つの配列の比較,ケースを無視します
$result = array_diff_uassoc($array1, $array2, 'case_insensitive_key_compare');
// 出力結果
print_r($result);
?>
カスタム比較関数: case_insensitive_key_compareは、2つの文字列を比較してケースを無視するphpの内蔵strcasecmp関数を使用します。 2つの文字列が等しい場合、 strcasecmpは0を返し、それ以外の場合はゼロ以外の値が返されます。
配列定義: $ array1と$ array2は、比較する2つの配列です。ケースでは、キー名が異なることに注意してください。
CALLARRAY_DIFF_UASSOC : Case_Insensitive_Key_compareをカスタム比較関数としてArray_diff_uassocに渡し、ケースを無視する重要な比較を実装します。
出力:最後に、 $ resultアレイには、キー値が$ array2キー値と一致しない$ array1のアイテムが含まれています。
上記のコードを実行すると、出力は次のとおりです。
Array
(
[third] => cherry
)
この例では、 $ array1のキーは「3番目」であり、 $ array2のキーは「3番目」ですが、ケースを無視する比較方法を使用するため、同じと見なされます。