array_diff_uassoc ユーザーが指定したコールバック関数を利用し、 追加された添字の確認を含めて配列の差を計算する &reftitle.description; arrayarray_diff_uassoc arrayarray1 arrayarray2 array... callablekey_compare_func array1 のキーを array2 のキーと比較し、その差を返します。 この関数は array_diff に似ていますが、 配列のキーを用いて比較するという点が異なります。 array_diff_assoc とは異なり、 内部関数ではなくユーザーが指定したコールバック関数を用いて添字を比較します。 &reftitle.parameters; array1 比較元の配列。 array2 比較する対象となる配列。 ... さらに比較する対象となる配列。 key_compare_func &return.callbacksort; &callback.cmp; &reftitle.returnvalues; array1 の要素のうち、 その他の配列のいずれにも含まれないものだけを残した配列を返します。 &reftitle.examples; <function>array_diff_uassoc</function> の例 "a" => "green" の組み合わせが両方の配列に存在し、 関数の出力には存在しないことが確認できます。 これとは異なり、0 => "red" は出力されています。 なぜなら 2 つめの引数の "red" は、キーが 1 だからです。 $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 ) ]]> 2 つのインデックスが等しいかどうかは、 ユーザーが指定したコールバック関数で調べます。 &reftitle.notes; この関数は n 次元配列の一つの次元しかチェックしません。 もちろん、array_diff_uassoc($array1[0], $array2[0], "key_compare_func"); のようにすることでより深い次元でのチェックもできます。 &reftitle.seealso; 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