array_udiff() Function
array_udiff()是PHP中的一个内建函数,用于区分两个或多个数组。该函数通过使用用户定义的函数数据比较来比较两个或多个数组的不同值,并返回这些值的差异。实际上,该函数返回第一个数组中存在的所有条目,而其他数组中不存在这些条目。如果所有数组的值都相同,则返回NULL数组。它与arr_diff()的比较不同
语法
1 | array_udiff($array1, $array2, $array3..........array nth, arr_udiffFunction) |
使用的参数:这个array_udiff()函数参数描述如下:
- array1 :它是初始数组,并与另一个数组进行比较……其强制性的。
- array2:与第一个数组键相比较的数组。其强制性的。
- array3:第二个数组与第一个数组键进行比较。其可选的。
- arr_udiffFunction:它所需要的用户定义函数和一个字符串,该字符串定义用户定义的回调函数,如果第一个参数是<,=,或>大于0,则返回一个整数<,=,或>大于第二个参数。
返回值:返回一个数组类型值,该值包含所有其他数组中出现的第一个数组。如果它们都是相同的,那么array返回NULL数组。
注意:这个内置函数(array_udiff())比较数组的键值,而用户定义的函数比较值。
例子1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | Input : $arr1=array("a"=>"Geeksforgeeks", "b"=>"IDE", "d"=>"environment", "v"=>"Code Run"); $arr2=array("a"=>"Geeksforgeeks", "b"=>"Editor", "f"=>"Write", "h"=>"Code", ); Output: Array ( [b] => IDE [d] => environment [v] => Code Run ) Explanation: arr1 contains only three values(IDE, environment, Code Run) which is not present in arr2. |
例子2
1 2 3 4 5 6 7 8 9 10 11 12 13 | Input: $arr1 = array("a"=>"Geeks", "x"=>"article", "n"=>"Geeks"); $arr2 = array("x"=>"Geeks", "y"=>"for", "z"=>"Geeks", "a"=>"IDE", "a"=>"Editor", ); Output: Array ( [x] => article ) Explanation: arr1 contains only one values(article) which is not present in arr2. |
让我们举一个简单的例子来理解array_udiff()函数。
程序1:取两个数组(array1和array2),使用用户定义的键比较函数(arr_udiffFunction)。
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 26 27 | <?php //PHP code for array_uintersect_assoc function function arr_udiffFunction($a, $b) { if ($a === $b) { return 0; } return ($a > $b) ? 1 : -1; } //array list for comparison. $arr1 = array( "a" => "C", "b" => "C++", "d" => "Java", "r" => "XML" ); $arr2 = array( "a" => "C", "y" => "C++", "d" => "C#", "x" => "PHP" ); $result = array_udiff($arr1, $arr2, "arr_udiffFunction"); //print result. print_r($result); ?> |
输出
1 2 3 4 5 | Array ( [d] => Java [r] => XML ) |
程序:2取4个数组(array1、array2、array3、array4),使用用户定义的键比较函数array_udiff()。
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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | <?php //PHP code for array_uintersect_assoc function function arr_udiffFunction($a, $b) { if ($a === $b) { return 0; } return ($a > $b) ? 1 : -1; } //array list for comparison. $arr1 = array( "a" => "C lab", "b" => "C++ lab", "d" => "Java lab", "r" => "ASP lab" ); $arr2 = array( "a" => "C lab", "y" => "C++ lab", "d" => "Java lab", "r" => "XML lab" ); $arr3 = array( "a" => "C# lab", "n" => "Android lab", "d" => "Python lab", "r" => "XML lab" ); $arr4 = array( "a" => "Objective C lab", "y" => "C++ lab", "d" => "Java lab", "r" => "Perl lab" ); $result = array_udiff($arr1, $arr2, $arr3, "arr_udiffFunction"); //print result. print_r($result); ?> |
输出
1 2 3 4 | Array ( [r] => ASP lab ) |
程序:3取两个数组(array1和array2),使用用户定义的键比较函数(array_udiff()。它匹配数组的所有元素和值,返回NULL。
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 26 27 | <?php //PHP code for array_uintersect_assoc function function arr_udiffFunction($a, $b) { if ($a === $b) { return 0; } return ($a > $b) ? 1 : -1; } //array list for comparison. $arr1 = array( "a" => "C", "b" => "C++", "d" => "Java", "r" => "XML" ); $arr2 = array( "a" => "C", "y" => "C++", "d" => "Java", "r" => "XML" ); $result = array_udiff($arr1, $arr2, "arr_udiffFunction"); //print result. print_r($result); ?> |
输出
1 2 3 | Array ( ) |