数组函数

PHP array_intersect_ukey() 函数

主题:PHP 数组参考上一页|下一页

说明

array_intersect_ukey() 函数比较两个或多个数组的键,并使用用户定义的键比较函数返回匹配项或交集。

此外,比较中不考虑键的值,只检查键。

下表总结了该函数的技术细节。

返回值: 返回一个数组,其中包含 array1 中的所有元素,其键存在于 所有 of 其他数组中。
版本: PHP 5.1.0+

语法

array_intersect_ukey() 函数的基本语法如下:

array_intersect_ukey(array1, array2, ..., key_compare_function);

下面的例子展示了 array_intersect_ukey() 函数的作用。

<?php
// 定义键比较函数
function compare($a, $b){
    // Converting key to lowercase
    $a = strtolower($a);
    $b = strtolower($b);

    if($a == $b){
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}

// 样本数组
$array1 = array("a"=>"apple", "b"=>"ball", "c"=>"cat");
$array2 = array("A"=>"airplane", "x"=>"xylophone", "y"=>"yacht");

// 计算交点
$result = array_intersect_ukey($array1, $array2, "compare");
print_r($result);
?>

注意: 如果两个键相等,则键比较函数必须返回一个等于 0 的整数,如果第一个键小于第二个键,则返回一个小于零的整数,如果两个键相等,则返回一个大于零的整数。 第一个键大于第二个键。

或者,您可以简单地使用 PHP 内置的 strcasecmp() 函数,该函数执行不区分大小写的字符串比较,如果 str1 小于 str2,则返回 < 0; 如果 str1 大于 str2,则为 > 0;如果它们相等,则为 0。 因此,上面的例子可以改写为:

<?php
// 样本数组
$array1 = array("a"=>"apple", "b"=>"ball", "c"=>"cat");
$array2 = array("A"=>"airplane", "x"=>"xylophone", "y"=>"yacht");

// 计算交点
$result = array_intersect_ukey($array1, $array2, "strcasecmp");
print_r($result);
?>

参数

array_intersect_ukey() 函数接受以下参数。

参数 说明
array1 必填。 指定要比较的数组。
array2 必填。 指定一个数组来比较键。
... 可选。 指定更多数组来比较键。
key_compare_function 必填。 指定用于键比较的回调函数。

更多示例

这里有更多示例展示了 array_intersect_ukey() 函数的实际工作原理:

以下示例演示如何使用用户提供的键比较函数比较三个数组的键并获取交集或匹配。

<?php
// 样本数组
$array1 = array("a"=>"apple", "b"=>"ball", "c"=>"cat", "dog");
$array2 = array("A"=>"apricot", "b"=>"banana");
$array3 = array("a"=>"alligator", "b"=>"balloon");

// 计算差异
$result = array_intersect_ukey($array1, $array2, $array3, "strcasecmp");
print_r($result);
?>
Advertisements