array_diff_uassoc ユーザが指定したコールバック関数を利用し、 追加された添字の確認を含めて配列の差を計算する 説明 arrayarray_diff_uassoc arrayarray1 arrayarray2 array... callbackkey_compare_func array_diff_uassoc は、 array1 から他の引数の配列の中に現れない全ての値を含む array を返します。 array_diff と異なり、 キーが比較に使用されることに注意してください。 比較は、ユーザが指定したコールバック関数を利用して行われます。 この関数は、1 つめの引数が 2 つめより小さい / 等しい / 大きい 場合にそれぞれ 負の数 / ゼロ / 正の数 を返す必要があります。 これが array_diff_assoc との相違点で、 こちらは比較のために内部関数を用いています。 <function>array_diff_uassoc</function> の例 $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); ?> ]]> &example.outputs; brown [c] => blue [0] => red ) ]]> この例で、"a" => "green" の組み合わせが両方の配列に存在し、 関数の出力には存在しないことが確認できます。 これとは異なり、0 => "red" は出力されています。 なぜなら 2 つめの引数の "red" は、キーが 1 だからです。 2 つのインデックスが等しいかどうかは、 ユーザが指定したコールバック関数で調べます。 この関数は n 次元配列の一つの次元しかチェックしないことに注意してください。 もちろん、array_diff_uassoc($array1[0], $array2[0], "key_compare_func"); のようにすることでより深い次元でのチェックもできます。 array_diffarray_diff_assocarray_udiffarray_udiff_assocarray_udiff_uassocarray_intersectarray_intersect_assocarray_uintersectarray_uintersect_assoc および array_uintersect_uassoc も参照ください。