array_diff_uassoc通过使用自定义函数比较键、内建函数比较值,计算数组的差集
/**
* Computes the difference of arrays with additional index check which is performed by a user supplied callback function
* @link https://php.net/manual/en/function.array-diff-uassoc.php
* @param array $array1 <p>
* The array to compare from
* </p>
* @param array $array2 <p>
* An array to compare against
* </p>
* @param array $_ [optional]
* @param callback $key_compare_func <p>
* callback function to use.
* The callback function must return an integer less than, equal
* to, or greater than zero if the first argument is considered to
* be respectively less than, equal to, or greater than the second.
* </p>
* @return array an array containing all the entries from
* array1 that are not present in any of the other arrays.
* @meta
*/
function array_diff_uassoc(array $array1, array $array2, array $_ = null, $key_compare_func) { }
示例:
$array1 = [
'a' => 'aaa-1',
'b' => 0,
'c' => 'ccc'
];
$array2 = [
'a' => 'aaa-2',
'b' => '',
'e' => 'ccc'
];
$result = array_diff_uassoc($array1, $array2, function($k1, $k2){
if ($k1 == $k2) {
return 0;
}
return $k1 > $k2 ? 1 : -1;
});
var_dump($result);
//结果
//array(3) {
// 'a' =>
// string(5) "aaa-1"
// 'b' =>
// int(0)
// 'c' =>
// string(3) "ccc"
//}