現在の位置: ホーム> 最新記事一覧> Array_diff_uassoc()を使用して、連想配列の違いを区別します

Array_diff_uassoc()を使用して、連想配列の違いを区別します

M66 2025-06-06

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);
}
?>

コード解析

  1. 2つの連想配列$ array1$ array2を定義します。

  2. array_diff_uassoc()関数を使用して、2つの配列と比較関数key_compareを渡します。

  3. key_compare関数は、 strcmp()を使用して、キーのアルファベット順の順序を比較します。その返品値は、2つのキーの相対順序を決定します。

    • 負の数が返された場合、 $ key1が$ key2未満であることを意味します。

    • ゼロが返される場合、 $ key1が$ key2に等しいことを意味します。

    • 正の数が返された場合、 $ key1が$ key2を超えることを意味します。

  4. 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の例

URLを含む配列に取り組んでおり、 Array_diff_uassoc()を使用して違いを見つける必要があるとします。ドメイン名をM66.netに置き換える特定の例を次に示します。