📜  数组相交 - PHP (1)

📅  最后修改于: 2023-12-03 15:10:22.856000             🧑  作者: Mango

数组相交 - PHP

在 PHP 中,有多种方法可以判断两个数组是否相交。本文将介绍几种常见的方法,并提供示例代码。

方法一:array_intersect

array_intersect 函数可以用于比较两个或多个数组的交集。它返回一个数组,包含所有出现在所有输入数组中的值。

语法
array_intersect(array $array1, array $array2, ...): array
参数
  • $array1, $array2, ...:输入数组。
返回值

一个包含所有输入数组中出现的值的数组。

示例代码
<?php
$array1 = ['a', 'b', 'c'];
$array2 = ['b', 'c', 'd'];
$result = array_intersect($array1, $array2);
print_r($result);
?>

输出:

Array
(
    [1] => b
    [2] => c
)
方法二:array_uintersect

array_uintersect 函数可以用于比较两个或多个数组的交集,并使用回调函数来比较数组中的元素。它返回一个数组,包含所有出现在所有输入数组中的值。

语法
array_uintersect(array $array1, array $array2, ..., callable $callback): array
参数
  • $array1, $array2, ...:输入数组。
  • $callback:一个回调函数,用于比较数组中的元素。函数应该返回一个整数,表示比较结果。更多细节请参阅 PHP 文档。
返回值

一个包含所有输入数组中出现的值的数组。

示例代码
<?php
$array1 = ['a', 'b', 'c'];
$array2 = ['b', 'c', 'd'];
$result = array_uintersect($array1, $array2, 'strcasecmp');
print_r($result);
?>

输出:

Array
(
    [1] => b
    [2] => c
)
方法三:array_intersect_key

array_intersect_key 函数可以用于比较两个或多个数组的交集,并使用键名来比较数组中的元素。它返回一个数组,包含所有出现在所有输入数组中,并且键名也出现在所有输入数组中的值。

语法
array_intersect_key(array $array1, array $array2, ...): array
参数
  • $array1, $array2, ...:输入数组。
返回值

一个包含所有输入数组中出现的值,且键名也出现在所有输入数组中的数组。

示例代码
<?php
$array1 = ['a' => 1, 'b' => 2, 'c' => 3];
$array2 = ['b' => 4, 'c' => 5, 'd' => 6];
$result = array_intersect_key($array1, $array2);
print_r($result);
?>

输出:

Array
(
    [b] => 2
    [c] => 3
)
方法四:array_uintersect_assoc

array_uintersect_assoc 函数可以用于比较两个或多个数组的交集,并使用回调函数和键名来比较数组中的元素。它返回一个数组,包含所有出现在所有输入数组中,并且键名也出现在所有输入数组中的值。

语法
array_uintersect_assoc(array $array1, array $array2, ..., callable $callback): array
参数
  • $array1, $array2, ...:输入数组。
  • $callback:一个回调函数,用于比较数组中的元素和键名。函数应该返回一个整数,表示比较结果。更多细节请参阅 PHP 文档。
返回值

一个包含所有输入数组中出现的值,且键名也出现在所有输入数组中的数组。

示例代码
<?php
$array1 = ['a' => 1, 'b' => 2, 'c' => 3];
$array2 = ['b' => 4, 'c' => 5, 'd' => 6];
$result = array_uintersect_assoc($array1, $array2, function($a, $b) {
    if ($a === $b) {
        return 0;
    }
    return ($a > $b) ? 1 : -1;
});
print_r($result);
?>

输出:

Array
(
    [b] => 2
    [c] => 3
)
方法五:array_intersect_ukey

array_intersect_ukey 函数可以用于比较两个或多个数组的交集,并使用回调函数来比较数组中的键名。它返回一个数组,包含所有出现在所有输入数组中,并且键名也出现在所有输入数组中的值。

语法
array_intersect_ukey(array $array1, array $array2, ..., callable $callback): array
参数
  • $array1, $array2, ...:输入数组。
  • $callback:一个回调函数,用于比较数组中的键名。函数应该返回一个整数,表示比较结果。更多细节请参阅 PHP 文档。
返回值

一个包含所有输入数组中出现的值,且键名也出现在所有输入数组中的数组。

示例代码
<?php
$array1 = ['a' => 1, 'b' => 2, 'c' => 3];
$array2 = ['b' => 4, 'c' => 5, 'd' => 6];
$result = array_intersect_ukey($array1, $array2, function($key1, $key2) {
    return strcasecmp($key1, $key2);
});
print_r($result);
?>

输出:

Array
(
    [b] => 2
    [c] => 3
)
结论

以上就是 PHP 中数组相交的几种常见方法。你可以根据自己的需求,在这些方法之间进行选择。如果你想了解更多有关 PHP 数组操作的信息,请查看 PHP 文档。