array_diff_uassoc
ユーザが指定したコールバック関数を利用し、
追加された添字の確認を含めて配列の差を計算する
説明
arrayarray_diff_uassoc
arrayarray1
arrayarray2
array...
callbackkey_compare_func
array_diff_uassoc は、
array1 から他の引数の配列の中に現れない全ての値を含む
array を返します。
array_diff と異なり、
キーが比較に使用されることに注意してください。
比較は、ユーザが指定したコールバック関数を利用して行われます。
この関数は、1 つめの引数が 2 つめより小さい / 等しい / 大きい
場合にそれぞれ 負の数 / ゼロ / 正の数 を返す必要があります。
これが array_diff_assoc との相違点で、
こちらは比較のために内部関数を用いています。
array_diff_uassoc の例
$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_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 も参照ください。