array_diff_uassoc

(PHP 5, PHP 7, PHP 8)

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

描述

array_diff_uassoc(array $array, array ...$arrays, callable $key_compare_func): array

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

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

参数

array

要比较的数组

arrays

要比较的数组

key_compare_func

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

callback(mixed $a, mixed $b): int
警告

从比较函数返回非整数值(如 float)会导致内部将回调的返回值强制转换为 int。因此,诸如 0.990.1 之类的值将都被强制转换为整数 0,这将导致这些值被视为相等。

返回值

返回一个 array,其中包含 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 注释

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