PHPでは、 array_diff_uassoc()は、2つの連想配列を比較し、それらの違いを返す関数です。配列のキー値に基づいて比較するだけでなく、カスタム比較関数が値が等しいかどうかを判断することもできます。この関数は、多次元配列の処理や、特別な比較ロジックが必要な場合に非常に適しています。
array_diff_uassoc()の基本的な構文は次のとおりです。
array_diff_uassoc(array $array1, array $array2, callable $key_compare_func): array
$ array1 :最初の連想配列。
$ array2 :2番目の連想配列。
$ key_compare_func :配列キーを比較するために使用されるコールバック関数。この関数は2つのパラメーターを取り、整数値を返し、比較結果を示します。
2つの連想配列があるとしますが、それらの違いを知りたいと思います。具体的には、2番目の配列ではなく、最初の配列にある要素を見つけたいと考えています。
<?php
$array1 = array(
"a" => "apple",
"b" => "banana",
"c" => "cherry"
);
$array2 = array(
"a" => "apple",
"b" => "blueberry"
);
$result = array_diff_uassoc($array1, $array2, "key_compare");
print_r($result);
function key_compare($key1, $key2) {
return strcmp($key1, $key2);
}
?>
2つの連想配列$ array1と$ array2を定義します。
array_diff_uassoc()関数を使用して、2つの配列と比較関数key_compareを渡します。
key_compare関数は、 strcmp()を使用して、キーのアルファベット順の順序を比較します。その返品値は、2つのキーの相対順序を決定します。
負の数が返された場合、 $ key1が$ key2未満であることを意味します。
ゼロが返される場合、 $ key1が$ key2に等しいことを意味します。
正の数が返された場合、 $ key1が$ key2を超えることを意味します。
array_diff_uassoc()関数は、 $ array1の要素を$ array1に返します。
Array
(
[c] => cherry
)
上記の出力からわかるように、 array_diff_uassoc()は$ array1に「c」=> "cherry"を返します。この要素は、 $ array2に対応するキー「C」を見つけられないためです。
array_diff_uassoc()を使用すると、単純な文字列や数値比較だけでなく、比較関数をカスタマイズできます。たとえば、特定のロジックに基づいてキー価値ペアを比較できます。たとえば、リテラル値の代わりに配列値の長さを比較するとします。
<?php
$array1 = array(
"a" => "apple",
"b" => "banana",
"c" => "cherry"
);
$array2 = array(
"a" => "apple",
"b" => "banana",
"c" => "pear"
);
$result = array_diff_uassoc($array1, $array2, "length_compare");
print_r($result);
function length_compare($key1, $key2) {
return strlen($key1) - strlen($key2);
}
?>
URLを含む配列に取り組んでおり、 Array_diff_uassoc()を使用して違いを見つける必要があるとします。ドメイン名をM66.netに置き換える特定の例を次に示します。