array_diff_uassoc 用内置的函数比较值,用用户提供的函数比较键
array_udiff_assoc 用用户提供的函数比较值,用内置的函数比较键
array_diff_uassoc()
函数使用用户自定义的回调函数 (callback) 做索引检查来计算两个或多个数组的差集。返回一个数组,该数组包括了在 array1 中但是不在任何其他参数数组中的值。 注意,与 array_diff() 函数 不同的是,键名也要进行比较。 参数 function 是用户自定义的用来比较两个数组的函数,该函数必须带有两个参数 - 即两个要进行对比的键名。因此与函数 array_diff_assoc() 的行为正好相反,后者是用内部函数进行比较的。 返回的数组中键名保持不变。
注意,与 array_diff() 函数 不同的是,键名也要进行比较。 参数 function 是用户自定义的用来比较两个数组的函数,该函数必须带有两个参数 - 即两个要进行对比的键名。因此与函数 array_diff_assoc() 的行为正好相反,后者是用内部函数进行比较的。 返回的数组中键名保持不变。
function compare_func($a, $b)
{
if(abs($a) == abs($b)) return 0;
return (abs($a) > abs($b))?1:-1;
}
$test1 = array( 1 => "a", 2 => "b", 3 => "c");
$test2 = array( -1 => "a", -2 => "b", -3 => "c");
print_r(array_diff_uassoc($test1, $test2, "compare_func"));
print_r(array_udiff_assoc($test1, $test2, "compare_func"));
Array()
Array( [1] => a [2] => b [3] => c)