array_diff_ukey()

1. 定义

该函数使用用户自定义的函数对两个数组的键名进行比较,比较第一个数组与后面数组的差集。 返回第一个数组与后面多个数组的键名差集数组。

  • 差集:AB的差集为,A集合中与B集合不相同的元素
  • 该函数只比较键名(用户需要显式定义键名比较函数)

2. 语法

array_diff_ukey ( array $array1 , array $array2 [, array $... ], callable $key_compare_func ) : array

3. 参数说明

参数 可选性 数据类型 描述
$array1 必需 数组 计算其差集的数组
$array2 必需 数组 被比较的数组
$... 可选 数组 被比较的数组
$key_compare_func 必需 可回调类型 用户自定义的比较函数

其中,$key_compare_func参数是一个回调函数名的字符串,用户必须定义这个函数。该函数接受两个参数,并且需要在比较两个参数后,相应地返回一个小于零(第一个参数小于第二个参数时)、大于零(第一个参数大于第二个参数时)或者等于零(两个参数相等时)的整数。

4. 示例

<?php

// array_diff_ukey()
// 使用**用户自定义的函数**对两个数组的**键名**进行比较,比较第一个数组与后面数组的差集

$arr1 = [1, 2, 3, 'name'=>'极速数据', 'arr'=>['a', 'b']];
$arr2 = [0, 2, 8, 'host'=>'https://www.jisuapi.com/'];
$arr3 = [3, 'x', 'y', 'z', 'arr'=>['a', 'b']];

function key_compare_func($key_a, $key_b) {
    if($key_a === $key_b) return 0;
    return ($key_a > $key_b) ? 1 : -1;
}

$diff = array_diff_ukey($arr1, $arr2, 'key_compare_func');
var_dump($diff);
/* 
array(2) {
  ["name"]=>
  string(12) "极速数据"
  ["arr"]=>
  array(2) {
    [0]=>
    string(1) "a"
    [1]=>
    string(1) "b"
  }
}
*/

$diff = array_diff_ukey($arr1, $arr3, 'key_compare_func');
var_dump($diff);
/* 
array(1) {
  ["name"]=>
  string(12) "极速数据"
}
*/

$diff = array_diff_ukey($arr1, $arr2, $arr3, 'key_compare_func');
var_dump($diff);
/* 
array(1) {
  ["name"]=>
  string(12) "极速数据"
}
*/

5. 延展阅读

  • array_diff():计算第一个数组与后面一个或多个数组之间的差集
  • array_udiff():使用用户自定义的比较函数对两个数组的键值进行比较,比较第一个数组与其后的数组之间的差集
  • array_diff_assoc():计算第一个数组与后面一个或多个数组之间的差集,并比较键名是否相同
  • array_diff_uassoc():使用用户自定义的函数对两个数组的键值对进行比较,比较第一个数组与后面数组的差集
  • array_udiff_assoc():使用用户自定义的函数对两个数组的键值对进行比较,比较第一个数组与后面数组的差集
  • array_udiff_uassoc():使用用户自定义的函数对两个数组的键值对进行比较,比较第一个数组与后面数组的差集
  • array_diff_key():使用键名来对比第一个数组与后面一个或多个数组之间的差集
  • array_intersect():计算第一个数组与后面一个或多个数组之间的交集
  • array_intersect_assoc():计算第一个数组与后面一个或多个数组之间的交集,同时会比较键名
  • array_intersect_uassoc():使用用户自定义的函数对两个数组的键值对进行比较,比较第一个数组与后面数组的交集
  • array_intersect_key():使用键名来对比第一个数组与后面一个或多个数组之间的交集
  • array_intersect_ukey():使用用户自定义的函数对两个数组的键名进行比较,比较第一个数组与后面数组的交集