array_diff_uassoc()函数比较两个(或多个)数组的键和值,并返回一个包含array1中的条目的数组,这些条目在任何其他具有相同值的数组中都不存在。
此函数不同于array_diff(),因为array_diff()比较值,而此函数比较其他数组中的键及其值。
此函数与array_diff_assoc()不同,因为array_diff_assoc()使用内部算法比较键及其值,而此函数使用用户定义的函数比较键及其值。
array_diff_uassoc ( $array1, $array2 [, $array3..., callback $key_compare_func] );
序号 | 参数及说明 |
---|---|
1 | array1(必填) 要比较的数组 |
2 | array2(必填) 这是一个要与第一个数组进行比较的数组 |
3 | array3(Optional) 与第一个数组进行比较的数组 |
4 | key_compare_func(必填) 在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数。 |
此函数返回一个数组,其中包含array1中的所有条目,但其他任何数组中都不存在。
此函数最早是在PHP版本5.0.0中引入的。
试试下面的实例。在这里,如果 $input1键等于任何其他输入数组,则键比较函数返回0; 如果大,则返回1; 如果小,则返回 -1。
使用定义的函数比较键时,两个数组中确实都有键“ a”,因此它不会出现在输出中。 下一个键“ b”和“ c”不在第二个数组中,因此它将进入输出。 另外的对0 =>“ red”在输出中,因为在第二个参数“ red”中的键为1:
<?php function key_compare_func($a, $b) { if ($a === $b) { return 0; } return ($a > $b)? 1: -1; } $input1 = array("a" => "green", "b" => "brown", "c" => "blue", "red"); $input2 = array("a" => "green", "yellow", "red"); $result = array_diff_uassoc($input1, $input2, "key_compare_func"); print_r($result); ?>测试看看‹/›
输出结果:
Array ( [b] => brown [c] => blue [0] => red )
试试下面的实例。这次“red”将不在输出中,因为现在两个键都等于0。
<?php function key_compare_func($a, $b) { if ($a === $b) { return 0; } return ($a > $b)? 1: -1; } $input1 = array("a" => "green", "b" => "brown", "c" => "blue", "red"); $input2 = array("a" => "green", "c" => "yellow", "red"); $result = array_diff_uassoc($input1, $input2, "key_compare_func"); print_r($result); ?>测试看看‹/›
输出结果:
Array ( [b] => brown [c] => blue )