array_diff_assoc()

1. 定义

与函数array_diff()一样,该函数计算第一个数组与后面一个或多个数组之间的差集,但该函数还会比较键名是否相同。 返回第一个数组与之后数组的差集数组。

注:

  • 差集:AB的差集为,A集合中与B集合不相同的元素
  • 该函数不仅比较键值,还会比较键名是否相同

2. 语法

array_diff_assoc ( array $array1 , array $array2 [, array $... ] ) : array

3. 参数说明

参数 可选性 数据类型 描述
$array1 必需 数组 计算其差集的数组
$array2 必需 数组 被比较的数组
$... 可选 数组 被比较的数组

4. 示例

<?php

// array_diff_assoc()
// 与函数`array_diff()`一样,该函数计算第一个数组与后面一个或多个数组之间的差集,但该函数还会比较键名是否相同

$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']];

// 比较差集时,若含有非数字或字符串类型的(如数组)元素,将会发出提示,但不影响结果
$diff = @array_diff_assoc($arr1, $arr2);
var_dump($diff);
/* 输出:
array(4) {
  [0]=>
  int(1)
  [2]=>
  int(3)
  ["name"]=>
  string(12) "极速数据"
  ["arr"]=>
  array(2) {
    [0]=>
    string(1) "a"
    [1]=>
    string(1) "b"
  }
}
*/

// 比较差集时,若含有非数字或字符串类型的(如数组)元素,将会发出提示,但不影响结果
$diff = @array_diff_assoc($arr1, $arr3);
var_dump($diff);
/* 输出:
array(4) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  ["name"]=>
  string(12) "极速数据"
}
*/

// 比较差集时,若含有非数字或字符串类型的(如数组)元素,将会发出提示,但不影响结果
$diff = @array_diff_assoc($arr1, $arr2, $arr3);
var_dump($diff);
/* 输出:
array(3) {
  [0]=>
  int(1)
  [2]=>
  int(3)
  ["name"]=>
  string(12) "极速数据"
}
*/

5. 延展阅读

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