【问题标题】:Find common values in multiple arrays with PHP使用 PHP 在多个数组中查找公共值
【发布时间】:2011-07-15 01:13:29
【问题描述】:

我需要在多个数组中找到共同的值。数组的数量可能是无限的。 示例(print_r 的输出)

Array1
(
    [0] => 118
    [1] => 802
    [2] => 800
)
Array2
(
    [0] => 765
    [1] => 801
)
Array3
(
    [0] => 765 
    [1] => 794
    [2] => 793
    [3] => 792
    [4] => 791
    [5] => 799
    [6] => 801
    [7] => 802
    [8] => 800
)

现在,我需要找到所有 3 个(或更多,如果可用)共有的值......我该怎么做?

感谢

【问题讨论】:

  • 只是开玩笑:这三个数组中没有共同的元素。

标签: php arrays


【解决方案1】:

array_intersect()

$intersect = array_intersect($array1,$array2,$array3);

如果你不知道你有多少个数组,那么建立一个数组数组和用户call_user_func_array()

$list = array();
$list[] = $array1;
$list[] = $array2;
$list[] = $array3;
$intersect = call_user_func_array('array_intersect',$list);

【讨论】:

  • 嗨,我认为 array_intersect 只检查第一个数组与其他数组,还是我从手册中理解了错误...现在尝试...
  • 确实如此,检查第一个数组与所有其他数组。根据您的描述,您需要 all 传递的数组中的条目。这就是 array_intersect 所做的。如果一个条目不在第一个数组中,它不关心它是否在其他数组中。
  • 如果第一个数组中有 801 并且从第三个数组中删除了 801 怎么办? array_intersect() 仍然会返回 801,这是所有数组中的公共元素??
  • 如果从第3个数组中去掉801,那么它就不再是所有数组中的公共元素了
  • 为了简单起见,要在返回的数组中,一个值必须存在于所有 3 个数组中...
猜你喜欢
  • 1970-01-01
  • 2015-12-15
  • 1970-01-01
  • 1970-01-01
  • 2020-02-15
  • 1970-01-01
  • 2014-12-13
  • 1970-01-01
  • 2020-07-26
相关资源
最近更新 更多