PHP - array_intersect_ukey() 函数


PHP 的 array_intersect_ukey() 函数用于计算多个数组的键名交集,但允许通过用户自定义的回调函数来比较键名(key)是否相等。与 array_intersect_key() 不同,它不依赖严格的键名类型或值匹配,而是通过自定义逻辑判断键名是否一致,适用于需要灵活键名匹配的场景(如不区分大小写、类型转换等)。

定义和用法

返回一个数组,其中包含 array1 的所有值,这些值具有所有参数中存在的匹配键。

语法

array_intersect_ukey ( $array1, $array2 [, $array3..., callback $key_compare_func] );

参数

参数 描述
array1(Required) 第一个数组是将与其他数组进行比较的数组。
array2(Required) 与第一个数组进行比较的数组
array3(Optional) 与第一个数组进行比较的数组
key_compare_func(Required) 用户定义的回调函数。

返回值

如果有任何错误,它将返回 FALSE。

示例

试试下面的例子 -

<?php
   function key_compare_func($k1, $k2) {
      if ($k1 == $k2)
         return 0;
      
      else if ($k1 > $k2)
         return 1;
      
      else
         return -1;
   }
    
   $input1 = array('blue'=>1, 'red'=>2, 'green'=>3, 'purple'=>4);
   $input2 = array('green'=>5, 'blue'=>6, 'pink'=>7, 'black'=>8);
   
   $result = array_intersect_ukey($input1, $input2, "key_compare_func");
   var_dump($result);
?> 

这将产生以下结果 -

array(2) {
  ["blue"]=>
  int(1)
  ["green"]=>
  int(3)
}