【问题标题】:How to use array_intersect in one array如何在一个数组中使用array_intersect
【发布时间】:2021-03-01 14:09:23
【问题描述】:

我有这个数组,我想将每个关键项相互比较并与 array_intersect 获得相似之处。我写了这段代码,但它只是比较前 2 个关键项目,我想比较所有关键项目。

            $res_arr = array_shift($m);
            foreach($m as $filter){
                $arr = array_intersect($res_arr, $filter);
            }

【问题讨论】:

  • 请提供一个最小的可重现示例,可能带有输入测试和所需的输出
  • 如您所知,array_intersect 需要 2 个数组来比较值,它会返回一个在 2 个数组之间具有相似性的数组,现在我想将每个键的值视为一个数组并将其传递给 array_intersect比较。我的愿望输出?所有值之间具有所有相似值的数组。
  • 换句话说,您只想要顶级数组的每个键下出现的值吗?我只能假设你想忽略空的,因为它们会导致每个交集都是一个空数组。
  • 但是你有2个空数组,它们的交集显然是一个空数组,所以你确定你想要所有数组的交集吗?
  • 是的,没错!如何做到这一点?

标签: php arrays array-intersect


【解决方案1】:

如果想要初始数组内部的所有数组的交集,则需要执行元素的交集与前面元素的交集:

$arr = [ 
    0=>[...],
    1=>[...],
    2=>[...],
];
$intersection = array_pop($arr);
foreach($arr as $el)
    $intersection = array_intersect($arr, $intersection);

print_r($intersection);

请注意,在您的示例中,您有 1+ 个空数组,因此交集将是一个空数组

【讨论】:

  • 并且也没有任何空数组,在添加到最终结果之前将其删除
猜你喜欢
  • 2018-04-22
  • 2011-08-04
  • 2014-08-08
  • 1970-01-01
  • 1970-01-01
  • 2015-12-27
  • 2021-12-28
  • 1970-01-01
  • 2020-06-16
相关资源
最近更新 更多