php数组交集差集

2021-10-13

数组交集

$array1 = ['a' => 1, 'b' => 2, 'c' => 3];
$array2 = ['a' => 2, 'b' => 4, 'c' => 3];
$arrays = [['d' => 1, 'b' => 2, 'c' => 3]];

对比键

// 已数组$array1为主,返回数组$array1、$array2、$arrays中都存在的键,并将键的值同时返回,值取$array1得
var_dump(array_intersect_key($array1, $array2, ...$arrays));

// 已数组$array1为主,使用回调函数$key_compare_func比较数组$array1、$array2、$arrays中都存在的键,并将键的值同时返回,值取$array1得;数组参数可以指定不定数量
// key_compare_func回调的第一参数为第一个数组的元素的键,第二个参数为其他参数数组的元素的键;在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数
var_dump(array_intersect_ukey($array1, $array2, $arrays[0], $key_compare_func = function ($val1, $val2) {return $val1 <=> $val2;}));

对比值

// 已数组$array1为主,返回数组$array1、$array2、$arrays中都存在的值。键名保留$array1的不变
var_dump(array_intersect($array1, $array2, ...$arrays));

// 已数组$array1为主,使用回调函数$value_compare_func比较数组$array1、$array2、$arrays中都存在的值,数组参数可以指定不定数量
// value_compare_func回调的第一参数为第一个数组的元素,第二个参数为其他参数数组的元素;在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数
var_dump(array_uintersect($array1, $array2, $arrays[0], $value_compare_func = function ($val1, $val2) { return $val1 <=> $val2;}));

对比键和值

// 已数组$array1为主,返回数组$array1、$array2、$arrays中都存在的键和值;键和值同时做比较
var_dump(array_intersect_assoc($array1, $array2, ...$arrays));

// 已数组$array1为主,使用回调函数$key_compare_func比较数组$array1、$array2、$arrays中都存在的键和值;数组参数可以指定不定数量;键和值同时做比较
// key_compare_func回调的第一参数为第一个数组的元素的键,第二个参数为其他参数数组的元素的键;在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数
var_dump(array_intersect_uassoc($array1, $array2, $arrays[0], $key_compare_func = function ($val1, $val2) {return $val1 <=> $val2;}));

// 已数组$array1为主,使用回调函数$value_compare_func比较数组$array1、$array2、$arrays中都存在的键和值,数组参数可以指定不定数量
// value_compare_func回调的第一参数为第一个数组的元素,第二个参数为其他参数数组的元素;在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数
var_dump(array_uintersect_assoc($array1, $array2, $arrays[0], $value_compare_func = function ($val1, $val2) {return $val1 <=> $val2;}));

// 已数组$array1为主,使用回调函数$key_compare_func和$value_compare_func比较数组$array1、$array2、$arrays中都存在的键和值,数组参数可以指定不定数量
// value_compare_func回调的第一参数为第一个数组的元素,第二个参数为其他参数数组的元素;在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数
// key_compare_func回调的第一参数为第一个数组的元素的键,第二个参数为其他参数数组的元素的键;在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数
var_dump(array_uintersect_uassoc($array1, $array2, $arrays[0], $value_compare_func = function ($val1, $val2) {return $val1 <=> $val2;}, $key_compare_func = function ($val1, $val2) {return $val1 <=> $val2;}));

数组差集

$array1 = ['a' => 1, 'f' => 10, 'c' => 3];
$array2 = ['a' => 2, 'b' => 4, 'c' => 3];
$arrays = [['d' => 1, 'b' => 2, 'c' => 3]];

对比键

// 已数组$array1为主,返回数组$array1中存在,但是$array2、$arrays中都不存在的键,并将键的值同时返回,值取$array1得
var_dump(array_diff_key($array1, $array2, ...$arrays));

// 已数组$array1为主,使用回调函数$key_compare_func比较数组$array1中存在,数组$array2、$arrays中都不存在的键,并将键的值同时返回,值取$array1得,数组参数可以指定不定数量
var_dump(array_diff_ukey($array1, $array2, $arrays[0], $key_compare_func = function ($val1, $val2) { return $val1 <=> $val2;}));

对比值

// 已数组$array1为主,返回数组$array1中存在,但是$arrays中都不存在的值;键名保留$array的不变
var_dump(array_diff($array1, ...$arrays));

// 已数组$array1为主,使用回调函数$value_compare_func比较数组$array1中存在,数组$array2、$arrays中都不存在的值;数组参数可以指定不定数量
// value_compare_func回调的第一参数为第一个数组的元素,第二个参数为其他参数数组的元素;在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数
var_dump(array_udiff($array1, $array2, $arrays[0], $value_compare_func = function ($val1, $val2) { return $val1 <=> $val2;}));

对比键和值

// 已数组$array1为主,返回数组$array1中存在,但是$array2、$arrays中都不存在的键和值;键和值同时做比较
var_dump(array_diff_assoc($array1, $array2, ...$arrays));

// 已数组$array1为主,使用回调函数$key_compare_func比较数组$array1中存在,数组$array2、$arrays中都不存在的键和值;键和值同时做比较,数组参数可以指定不定数量
// value_compare_func回调的第一参数为第一个数组的元素,第二个参数为其他参数数组的元素;在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数
var_dump(array_diff_uassoc($array1, $array2, $arrays[0], $key_compare_func = function ($val1, $val2) { return $val1 <=> $val2;}));

// 已数组$array1为主,使用回调函数$value_compare_func比较数组$array1中存在,数组$array2、$arrays中都不存在的键和值;键和值同时做比较,数组参数可以指定不定数量
// value_compare_func回调的第一参数为第一个数组的元素,第二个参数为其他参数数组的元素;在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数
var_dump(array_udiff_assoc($array1, $array2, $arrays[0], $value_compare_func = function ($val1, $val2) { return $val1 <=> $val2;}));

// 已数组$array1为主,使用回调函数$key_compare_func和$value_compare_func比较数组$array1中存在,数组$array2、$arrays中都不存在的键和值;键和值同时做比较,数组参数可以指定不定数量
// value_compare_func回调的第一参数为第一个数组的元素,第二个参数为其他参数数组的元素;在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数
// key_compare_func回调的第一参数为第一个数组的元素的键,第二个参数为其他参数数组的元素的键;在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数
var_dump(array_udiff_uassoc($array1, $array2, $arrays[0], $value_compare_func = function ($val1, $val2) {return $val1 <=> $val2;}, $key_compare_func = function ($val1, $val2) {return $val1 <=> $val2;}));

 

{/if}