array_intersect_uassoc() Function
array_intersect_uassoc()函数是PHP内建函数。它用于使用用户定义的比较函数比较两个或多个数组的键和值,并返回匹配项。
比较函数返回一个等于、大于或小于零的整数。如果要考虑的第一个参数分别小于、等于或大于第二个。如果条件为真,则返回真值,否则返回假值。
语法
1 | array_intersect_uassoc($array1, $array2, $array3..., uassoc_intersectFunction) |
使用的参数:此函数接受最少三个参数,所有三个参数都是必需的,其他参数是可选的。参数描述如下:
- $array1(Required):该数组将与其他数组进行比较。
- $array1(Required):数组与第一个数组的比较。
- $array3…(Optional):数组与第一个数组的比较。
- uassoc_intersectFunction (Required):它需要用户定义的函数。定义可调用比较函数的字符串。比较函数返回一个小于、等于或大于0的整数。如果第一个参数小于,等于或大于第二个参数。
返回值 :返回一个数组,其中包含的条目array1出现在所有其他数组,如:-(,arra3 arra2 arar4 ….更多)。返回值类型是一个数组。
注意:该函数使用用户定义的函数来比较键。(用户定义函数的功能适用于键,而非键值)
让我们举一个例子来理解array_intersect_uassoc()函数。
程序:1在这个例子中,我们使用不区分大小写的strcasecmp函数来处理数组的键。它比较键而不区分大小写。
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 | <?php $arr1 = array( "a" => "gfg", "b" => "GeeksforGeeks", "c" => "contribute" ); $arr2 = array( "a" => "gfg", "B" => "GeeksforGeeks", "c" => "ide" ); $arr3 = array( "x" => "gfg", "B" => "GeeksforGeeks", "c" => "practice" ); // Compare the keys and values by using a // user-defined key comparison function. // Here callback function applicable on keys echo "Using function: array_uintersect_assoc() \n "; $result = array_intersect_uassoc($arr1, $arr2, $arr3, "strcasecmp"); // printing result print_r($result); ?> |
输出
1 2 3 4 5 | Using function: array_uintersect_assoc() Array ( [b] => GeeksforGeeks ) |
程序:2取两个数组(array1和array2),使用用户定义的键比较函数(uassoc_intersectFunction)。函数的作用是:返回一个数组,该数组中只有数学键和值。
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 | <?php // Illusrate array_intersect_uassoc() // Function in PHP function uassoc_intersectFunction($arr1, $arr2) { if ($arr1 === $arr2) { return 0; } return ($arr1 > $arr2) ? 1 : -1; } // Code driven $arr1 = array( "0" => "Graph", "1" => "Dynamic", "3" => "Recursive", "4" => "Prime Factor" ); $arr2 = array( "4" => "Prime", "2" => "Factorial", "3" => "Recursive", "7" => "Modulo" ); $result = array_intersect_uassoc($arr1, $arr2, "uassoc_intersectFunction"); print_r($result); ?> |
输出
1 2 3 4 | Array ( [3] => Recursive ) |
程序:3取三个数组(arr1, arr2和arr3),使用用户定义的键比较函数(uassoc_intersectFunction)。用户定义函数匹配,因为它是键值相同,但没有找到任何这样的情况,然后它将返回空/空数组(在程序1中,我们使用strcasecmp函数,这个函数应用在键上,忽略case的敏感性,并返回结果geeksforgeek)。
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 | <?php // illusrate array_intersect_uassoc() // Function in PHP function uassoc_intersectFunction($arr1, $arr2) { if ($arr1 === $arr2) { return 0; } return ($arr1 > $arr2) ? 1 : -1; } // Code driven $arr1 = array( "a" => "gfg", "b" => "GeeksforGeeks", "c" => "contribute" ); $arr2 = array( "a" => "gfg", "B" => "GeeksforGeeks", "c" => "ide" ); $arr3 = array( "a" => "Gfg", "B" => "GeeksforGeeks", "c" => "practice" ); // userdefine function match as it is keys // with same values but no any such // case so it will return NULL $result = array_intersect_uassoc($arr1, $arr2, $arr3, "uassoc_intersectFunction"); print_r($result); ?> |
输出
1 2 3 | Array ( ) |
下面是一些相关的数组交集PHP函数
- PHP | array_intersect()函数:该函数返回另一个数组,其中包含作为参数传递的所有其他数组中的第一个数组的元素。如果没有匹配的元素,则返回一个空数组。
- PHP | array_intersect_assoc()函数:函数返回第一个数组的所有值,这些值在所有其他参数中都与第一个数组中的值在同一个索引中,即,其中的键主要用于比较。
- PHP | array_uintersect_assoc()函数:比较数组键和用户定义函数的值
- PHP | array_intersect_key()函数:该函数返回另一个数组,其中包含第一个数组的元素,这些元素作为参数传递给其他数组,这些数组的键相互匹配。如果没有键匹配,则返回一个空数组
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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | <?php // Program to illustrate==> // array_intersect() function // array_intersect_assoc() function // array_uintersect_assoc() function // array_intersect_uassoc() function $arr1 = array( "a" => "gfg", "b" => "GeeksforGeeks", "c" => "contribute" ); $arr2 = array( "a" => "gfg", "B" => "GeeksforGeeks", "c" => "ide" ); $arr3 = array( "a" => "Gfg", "B" => "GeeksforGeeks", "c" => "practice" ); // The array_intersect() function compares // the values (not keys) of two (or more) // arrays, and returns the matches. echo "**********array_intersect********** \n "; $result = array_intersect($arr1, $arr2, $arr3); print_r($result); // array_intersect_assoc() returns an array // containing all the values of arr1 that // are present in all the arguments. // for above input it will return null echo "******array_intersect_assoc******** \n "; $result = array_intersect_assoc($arr1, $arr2, $arr3); print_r($result); // array_uintersect_assoc compare values (data) // by using call back function echo "*********array_uintersect_assoc********** \n "; $result = array_uintersect_assoc($arr1, $arr2, $arr3, "strcasecmp"); print_r($result); // Compare the keys and values by using // a user-defined key comparison function // here callback function applicable on keys echo "*********array_uintersect_assoc *********\n "; $result = array_intersect_uassoc($arr1, $arr2, $arr3, "strcasecmp"); print_r($result); // compute the intersection of two or more arrays. // function returns another array containing // the elements of the first array that // are present in other arrays echo "*********array_intersect_key *********\n "; $result = array_intersect_key($arr1, $arr2, $arr3); print_r($result); ?> |
输出
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 | **********array_intersect********** Array ( [b] => GeeksforGeeks ) ******array_intersect_assoc******** Array ( ) *********array_uintersect_assoc********** Array ( [a] => gfg ) *********array_uintersect_assoc ********* Array ( [b] => GeeksforGeeks ) *********array_intersect_key ********* Array ( [a] => gfg [c] => contribute ) |