2024 年 PHP 日本大会

array_diff_uassoc

(PHP 5, PHP 7, PHP 8)

array_diff_uassoc计算数组的差集,并使用用户提供的回调函数进行索引检查

描述

array_diff_uassoc(数组 $array, 数组 ...$arrays, 可调用 $key_compare_func): 数组

比较 arrayarrays 并返回差集。与 array_diff() 不同,此函数在比较中使用数组键。

array_diff_assoc() 不同,此函数使用用户提供的回调函数进行索引比较,而不是内部函数。

参数

array

要从中比较的数组

arrays

要比较的数组

key_compare_func

比较函数必须返回一个整数,如果第一个参数小于、等于或大于第二个参数,则分别返回小于零、等于零或大于零。

回调(混合 $a, 混合 $b): int
警告

从比较函数返回 *非整数* 值(例如 浮点数)将导致回调返回值内部强制转换为 整数。因此,诸如 0.990.1 之类的值都将强制转换为整数 0,这将比较这些值是否相等。

返回值

返回一个 数组,其中包含 array 中不在任何其他数组中的所有条目。

示例

示例 #1 array_diff_uassoc() 示例

在此示例中,"a" => "green" 对同时出现在两个数组中,因此它不在函数的输出中。与之不同的是,0 => "red" 对出现在输出中,因为 "red" 的键在第一个数组中自动分配为 0,而在第二个数组中分配为 1,因为键 0 已经被 yellow占用。

<?php
function key_compare_func($a, $b)
{
return
$a <=> $b;
}

$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "green", "yellow", "red");
$result = array_diff_uassoc($array1, $array2, "key_compare_func");
print_r($result);
?>

以上示例将输出

Array
(
    [b] => brown
    [c] => blue
    [0] => red
)

两个索引的相等性由用户提供的回调函数检查。

注释

注意:

此函数只检查 n 维数组的一个维度。例如,可以使用 array_diff_uassoc($array1[0], $array2[0], "key_compare_func"); 检查更深的维度。

参见

添加注释

用户贡献的注释 1 个注释

MD. ABU SAYEM
10 年前
// 用于多维数组的 array_diff_uassoc
$color_1=array('a'=>'white','b'=>'red','c'=>array('a'=>'green','b'=>'blue','c'=>'yellow'));
$color_2=array('a'=>'white','b'=>'red','c'=>array('a'=>'white','b'=>'red','c'=>'yellow'));

function key_compare($a,$b){
if($a===$b) return 0;
return($a>$b)?1:-1;
}
print_r(array_diff_uassoc($color_1['c'], $color_2['c'],"key_compare"));

//输出
数组
(
[a] => green
[b] => blue
)
To Top