array_diff_key
array_diff_ukey
配列 関数
PHP Manual

# array_diff_uassoc

(PHP 5)

array_diff_uassoc — ユーザが指定したコールバック関数を利用し、 追加された添字の確認を含めて配列の差を計算する

### 説明

array array_diff_uassoc ( array `$array1` , array `$array2` [, array `$...` ], callback `$key_compare_func` )

`array1` のキーを `array2` のキーと比較し、その差を返します。 この関数は array_diff() に似ていますが、 配列のキーを用いて比較するという点が異なります。

array_diff_assoc() とは異なり、 内部関数ではなくユーザが指定したコールバック関数を用いて添字を比較します。

### パラメータ

`array1`

  比較元の配列。

`array2`

  比較する対象となる配列。

`...`

  さらに比較する対象となる配列。

`key_compare_func`

  使用するコールバック関数。 この関数は、1 つめの引数が 2 つめより小さい / 等しい / 大きい 場合にそれぞれ 負の数 / ゼロ / 正の数 を返す必要があります。

### 返り値

`array1` の要素のうち、 その他の配列のいずれにも含まれないものだけを残した配列を返します。

### 例

例1 array_diff_uassoc() の例

"a" => "green" の組み合わせが両方の配列に存在し、 関数の出力には存在しないことが確認できます。 これとは異なり、0 => "red" は出力されています。 なぜなら 2 つめの引数の "red" は、キーが 1 だからです。

`<?php
function key_compare_func($a, $b)
{
if ($a === $b) {
return 0;
}
return ($a > $b)? 1:-1;
}
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "green", "yellow", "red");
$result = array_diff_uassoc($array1, $array2, "key_compare_func");
print_r($result);
?>`

上の例の出力は以下となります。

    Array
    (
        [b] => brown
        [c] => blue
        [0] => red
    )

2 つのインデックスが等しいかどうかは、 ユーザが指定したコールバック関数で調べます。

### 注意

> 注意: この関数は n 次元配列の一つの次元しかチェックしません。 もちろん、array_diff_uassoc($array1[0], $array2[0], "key_compare_func"); のようにすることでより深い次元でのチェックもできます。

### 参考

- array_diff() - 配列の差を計算する
- array_diff_assoc() - 追加された添字の確認を含めて配列の差を計算する
- array_udiff() - データの比較にコールバック関数を用い、配列の差を計算する
- array_udiff_assoc() - データの比較にコールバック関数を用い、 追加された添字の確認を含めて配列の差を計算する
- array_udiff_uassoc() - データと添字の比較にコールバック関数を用い、 追加された添字の確認を含めて配列の差を計算する
- array_intersect() - 配列の共通項を計算する
- array_intersect_assoc() - 追加された添字の確認も含めて配列の共通項を確認する
- array_uintersect() - データの比較にコールバック関数を用い、配列の共通項を計算する
- array_uintersect_assoc() - データの比較にコールバック関数を用い、 追加された添字の確認も含めて配列の共通項を計算する
- array_uintersect_uassoc() - データと添字の比較にコールバック関数を用い、 追加された添字の確認も含めて配列の共通項を計算する

array_diff_key
array_diff_ukey
配列 関数
PHP Manual