<?php
// array_diff* 系列的函数都返回关联数组
$array1 = [
    ‘a‘ => 1,
    ‘b‘ => 2,
    ‘e‘ => 3,
];
$array2 = [
    ‘a‘ => 1,
    ‘b‘ => 3,
    ‘c‘ => 5, // 这里的 0 是默认的, 写出来只是为了明显一点
];
// 只比较值
echo "array_diff(\$array1, \$array2): \n";
var_dump(array_diff($array1, $array2));
// 只比较键
echo "array_diff_key(\$array1, \$array2): \n";
var_dump(array_diff_key($array1, $array2));
// 1、在 $array1 中的值, 但不在 $array2 中的值的对应项会被返回
// 2、在 $array1 中的键, 但不在 $array2 中的键的对应项会被返回(即使两个数组中有相同的该键对应的值)
// 可以简单理解为, 该函数融合了 array_diff_key 和 array_diff 的功能:
// 1、先比较了两个数组的键, 在 $array1 中, 但不在 $array2 中的键会被返回(array_diff_key)
// 2、再比较两个数组的值(array_diff)
echo "array_diff_assoc(\$array1, \$array2): \n";
var_dump(array_diff_assoc($array1, $array2));
function compare($key1, $key2) {
    if ($key1 == $key2) {
        return 0;
    }
    return ($key1 > $key2) ? 1 : -1;
}
// array_diff 使用自定义回调函数进行 键和值 比较: array_diff_uassoc(同时比较键和值)
echo "array_diff_uasssoc(\$array1, \$array2): \n";
var_dump(array_diff_uassoc($array1, $array2, ‘compare‘));
// array_diff 使用自定义回调函数进行 键 比较: array_diff_ukey(只比较键)
echo "array_diff_ukey(\$array1, \$array2): \n";
var_dump(array_diff_ukey($array1, $array2, ‘compare‘));
输出:
array_diff($array1, $array2): 
array(1) {
  ["b"]=>
  int(2)
}
array_diff_key($array1, $array2): 
array(1) {
  ["e"]=>
  int(3)
}
array_diff_assoc($array1, $array2): 
array(2) {
  ["b"]=>
  int(2)
  ["e"]=>
  int(3)
}
array_diff_uasssoc($array1, $array2): 
array(2) {
  ["b"]=>
  int(2)
  ["e"]=>
  int(3)
}
array_diff_ukey($array1, $array2): 
array(1) {
  ["e"]=>
  int(3)
}
array_diff、array_diff_key、array_diff_ukey、array_diff_assoc、array_diff_uassoc 的用法
原文:https://www.cnblogs.com/eleven24/p/8807609.html