array_diff_uassoc() Function
array_diff_uassoc()函数是PHP中的一个内置函数,用于使用用户定义的函数比较键来获得一个或多个数组之间的差异。这个函数比较一个或多个数组之间的键和值,并返回第一个数组中没有的元素。根据提供给该函数的uder定义函数,对键进行比较。
注意:这个函数不同于PHP | array_diff_assoc()函数,在array_diff_assoc()函数中,键是根据内部函数进行比较的,而在array_diff_uassoc()函数中,键是根据作为参数传递给它的用户定义函数进行比较的。
语法
1 | array_diff_assoc($array1, $array2, $array3, ..., $arrayn, user_function) |
参数:此函数接受数组列表作为参数,并接受用户定义的用于键比较的函数。
- list_of_array:该函数获取由空格分隔的数组列表,我们希望从中找到区别。在上面的语法中,数组的列表是$array1、$array2、$array3、…、$arrayn。此列表必须至少包含两个数组,否则将引发警告。
- user_fucntion:这是一个字符串类型参数,表示用户定义函数的名称,用于键的比较。如果第一个参数大于、小于或等于第二个参数,则该函数返回一个较小、较大或等于0的整数。
返回值:该函数返回一个数组,其中包含第一个数组$array1的元素,这些元素在传递给它的其他数组中不存在。将第一个数组$array1的键值与其他数组的值进行比较。键的比较是按照用户定义的函数进行的。
例子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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()函数:
程序1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <?php // PHP program to illustrate the // array_diff_uassoc() function // user defined fucntion 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); ?> |
输出
1 2 3 4 5 | Array ( [10] => striver [20] => raj ) |
程序2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <?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); ?> |
输出
1 2 3 4 5 | Array ( [20] => raj [30] => geek ) |
参考