交集

  • 单元仅在 (string) $elem1 === (string) $elem2 时被认为是相同的。也就是说,当字符串的表达是一样的时候
  • 以上规则适用于所有交集函数
array_intersect — 计算数组的交集(比较值)
语法

array array_intersect( array $array1, array $array2[, array $ ...] )

描述
  • array_intersect() 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意键名保留不变
参数
参数 描述
array1 输入的数组
... ...
返回值
  • 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值
举例
// 示例
$array1 = [1, 3, 5];
$array2 = [2, 5, 8];
$array3 = [3, 5, 10, 12];
$result = array_intersect($array1, $array2, $array3);
print_r($result); 
// 结果
Array
(
    [2] => 5
)

array_intersect_key — 使用键名比较计算数组的交集(比较键)
语法

array array_intersect_key( array $array1, array $array2[, array $ ...] )

描述
  • array_intersect_key() 返回一个数组,该数组包含了所有出现在 array1 中并同时出现在所有其它参数数组中的键名的值
参数
参数 描述
array1 输入的数组
... ...
返回值
  • 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值
举例
// 示例
$array1 = ['one'=>'1','two'=>2];
$array2 = ['two'=>2];
$array3 = ['three'=>3,'two'=>2];
$result = array_intersect_key($array1,$array2,$array3);
print_r($result);
// 结果
Array
(
    [two] => 2
)

array_intersect_assoc — 带索引检查计算数组的交集(同时比较键和值)
语法

array array_intersect_assoc( array $array1, array $array2[, array $ ...] )

描述
  • array_intersect_assoc() 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。
  • 注意和 array_intersect() 不同的是键名也用于比较
  • 键和值必须都相同,值的类型不需要相同
参数
参数 描述
array1 输入的数组
... ...
返回值
  • 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值
举例
// 示例
$array1 = ['one'=>1,'two'=>2];
$array2 = ['one'=>1,'two'=>3];
$array3 = ['one'=>1,'three'=>2];
$result = array_intersect_assoc($array1,$array2,$array3);
print_r($result);
// 结果
Array
(
    [one] => 1
)

array_intersect_uassoc — 带索引检查计算数组的交集,用回调函数比较索引(同时比较键和值,键是自定义函数)
语法

array array_intersect_uassoc( array $array1, array $array2[, array $ ...], callable $key_compare_func)

描述
  • array_intersect_uassoc() 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。
  • 注意和 array_intersect() 不同的是键名也用于比较
参数
参数 描述
array1 输入的数组
... ...
key_compare_func 在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数。int callback ( mixed $a, mixed $b )
返回值
  • 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值
举例
// 示例
$array1 = ["a" => "green", "b" => "brown", "c" => "blue", "red"];
$array2 = ["a" => "GREEN", "B" => "brown", "yellow", "red"];
$result = array_intersect_uassoc($array1, $array2, "strcasecmp");
print_r($result);
// 结果
Array
(
    [b] => brown
)

array_intersect_ukey — 用回调函数比较键名来计算数组的交集(比较键,键是自定义函数)
语法

array array_intersect_ukey( array $array1, array $array2[, array $...], callable $key_compare_func)

描述
  • array_intersect_ukey() 返回一个数组,该数组包含了所有出现在 array1 中并同时出现在所有其它参数数组中的键名的值
参数
参数 描述
array1 输入的数组
... ...
key_compare_func 在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数。int callback ( mixed $a, mixed $b )
返回值
  • 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值
举例
// 示例
function key_compare_func($key1, $key2)
{
     if ($key1 == $key2){
          return 0;
     } else if ($key1 > $key2){
          return 1;
     }else{
          return -1;
     }
}
$array1 = array('blue'  => 1, 'red'  => 2, 'green'  => 3, 'purple' => 4);
$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan'   => 8);
$result = array_intersect_ukey($array1, $array2, 'key_compare_func');
print_r($result);
// 结果
Array
(
    [blue] => 1
    [green] => 3
)

array_uintersect_assoc — 带索引检查计算数组的交集,用回调函数比较数据(同时比较键和值,值是自定义函数)
语法

array array_uintersect_assoc( array $array1, array $array2[, array $ ...], callable $data_compare_func)

描述
  • 此比较是通过用户提供的回调函数来进行的。如果认为第一个参数小于,等于,或大于第二个参数时必须分别返回一个小于零,等于零,或大于零的整数
  • 注意和 array_uintersect() 不同的是键名也要比较。数据是用回调函数比较的。
参数
参数 描述
array1 输入的数组
... ...
data_compare_func 在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数。int callback ( mixed $a, mixed $b )
返回值
  • 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值
举例
// 示例
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "GREEN", "B" => "brown", "yellow", "red");
print_r(array_uintersect_assoc($array1, $array2, "strcasecmp"));
// 结果
Array
(
    [a] => green
)

array_uintersect_uassoc — 带索引检查计算数组的交集,用回调函数比较数据和索引(同时比较键和值,键和值都是自定义函数)
语法

array array_uintersect_uassoc( array $array1, array $array2[, array $ ...], callable $data_compare_func, callable $key_compare_func)

描述
  • 通过额外的索引检查、回调函数比较数据和索引来返回多个数组的交集。注意和 array_uintersect() 不同的是键名也要比较。数据和索引都是用回调函数比较的
参数
参数 描述
array1 输入的数组
... ...
key_compare_func 在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数。int callback ( mixed $a, mixed $b )
data_compare_func 在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数。int callback ( mixed $a, mixed $b )
返回值
  • 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值
举例
// 示例
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "GREEN", "B" => "brown", "yellow", "red");
print_r(array_uintersect_uassoc($array1, $array2, "strcasecmp", "strcasecmp"));
// 结果
Array
(
    [a] => green
    [b] => brown
)

array_uintersect — 计算数组的交集,用回调函数比较数据(比较值,值是自定义函数)
语法

array array_uintersect( array $array1, array $array2[, array $ ...], callable $data_compare_func)

描述
  • array_uintersect() 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。数据比较是用回调函数进行的。此比较是通过用户提供的回调函数来进行的。如果认为第一个参数小于,等于,或大于第二个参数时必须分别返回一个小于零,等于零,或大于零的整数。
参数
参数 描述
array1 输入的数组
... ...
data_compare_func 在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数。int callback ( mixed $a, mixed $b )
返回值
  • 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值
举例
// 示例
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "GREEN", "B" => "brown", "yellow", "red");
print_r(array_uintersect($array1, $array2, "strcasecmp"));
// 结果
Array
(
    [a] => green
    [b] => brown
    [0] => red
)

results matching ""

    No results matching ""