array_diff_uassoc()函数是PHP中的一个内置函数,用于使用用户定义函数比较键来获取一个或多个数组之间的差异。该函数比较一个或多个数组之间的键和值,并返回第一个数组中不存在于其他数组中的元素。根据提供给该函数的用户定义函数来比较键。注意:该函数与PHP的array_diff_assoc()函数不同,因为array_diff_assoc()函数根据内部函数比较键,而array_diff_uassoc()函数根据传递给它的用户定义函数来比较键。
语法:
array_diff_uassoc(array1,array2, array3,…,arrayn, user_function)
参数:该函数接受一个参数列表,其中包含要查找差异的数组,以及用于比较键的用户定义函数。
list_of_array:该函数采用由空格分隔的数组列表,从中找到差异。在上面的语法中,数组列表是array1、array2、array3、……、arrayn。此列表必须包含至少两个数组,否则将引发警告。
user_function:这是一个字符串类型的参数,表示用于比较键的用户定义函数的名称。该函数返回一个整数,如果第一个参数大于第二个参数则返回大于0的值,小于第二个参数则返回小于0的值,等于第二个参数则返回等于0的值。
返回值:该函数返回一个包含第一个数组array1中不存在于其他参数中数组的元素的数组。比较在array1的键和值与其余数组之间进行。比较键是根据用户定义函数进行的。示例:
Input : $a1=array(10=>"striver", 20=>"raj", 30=>"geek")
$a2=array(20=>"striver", 10=>"raj", 30=>"geek")
function user_function($a, $b)
{
if ($a===$b)
{
return 0;
}
return ($a>$b)?1:-1;
}
Output: Array
(
[10] => striver
[20] => raj
)
Explanation: Since user_function returns 0 when keys
are equal and 1 and -1 when greater and less respectively.
So, the elements with unequal keys are in the output array.
下面程序说明了PHP中的array_diff_uassoc()函数:
<?php
// PHP program to illustrate the
// array_diff_uassoc() function
// user defined function that returns 0 if
// $array1's keys are equal to any other
// input array, else returns 1 if greater,
// or -1 if smaller
function user_function($a, $b)
{
if ($a===$b)
{
return 0;
}
return ($a>$b)? 1: -1;
}
// Input Arrays
$a1=array(10=>"striver", 20=>"raj", 30=>"geek");
$a2=array(20=>"striver", 10=>"raj", 30=>"geek");
$result = array_diff_uassoc($a1, $a2, "user_function");
print_r($result);
?>
output:
Array
(
[10] => striver
[20] => raj
)
示例2:
<?php
// PHP program to illustrate the
// array_diff_uassoc() function
// user defined function that returns 1 if
// $array1's keys are equal to any other
// input array, else returns 1 if greater,
// or 0 if smaller
function user_function($a, $b)
{
if ($a===$b)
{
return 1;
}
return ($a>$b)? 1: 0;
}
// Input Arrays
$a1 = array(10=>"striver", 20=>"raj", 30=>"geek");
$a2 = array(20=>"striver", 10=>"raj", 30=>"geek");
$result=array_diff_uassoc($a1, $a2, "user_function");
print_r($result);
?>
output:
Array
(
[20] => raj
[30] => geek
)
array_diff_uassoc() 对于多维数组:
array_diff_uassoc() 函数仅适用于一维数组。若要使用此函数检查多维数组,我们可以采用索引方法。
例如,对于二维数组:
array_diff_assoc(array1[index],array2[index], array3[index],…,arrayn[index], user_function)
在下面的程序中,我们比较两个位于二维数组 a1 和 a2 的第一个索引位置的数组。
<?php
function user_function($a, $b)
{
if ($a===$b)
{
return 0;
}
return ($a>$b)? 1: -1;
}
// Input Arrays
$a1 = array(array("a" => "green", "b" => "yellow", "c" => "white", "black"), "b" => "brown", "c" => "blue", "red");
$a2 = array(array("a" => "green", "b" => "yellow", "white", "d" => "black"), "yellow", "red");
$result = array_diff_uassoc($a1[0], $a2[0], "user_function");
print_r($result);
?>
output:
Array
(
=> white
[0] => black
)