【问题标题】:How do I filter the differences out of three arrays in PHP?如何过滤 PHP 中三个数组的差异?
【发布时间】:2011-12-14 13:31:40
【问题描述】:

我有三个数组,每个数组中都有 SimpleXML 对象。它们的结构如下:

Array
(
    [0] => SimpleXMLElement Object
        (
            [post_id] => 1476
            [name] => Johnson Fisheries Ltd.
            [owner] => Mr. John Johnson
        )
)

我希望能够比较所有 3 个数组并过滤掉差异,以便结果仅包含所有 3 个数组中相同的元素。

例如:

Array1
    (
        [0] => 1476
        [1] => 1560
        [2] => 1342
    )

Array2
    (
        [0] => 2454
        [1] => 1476
    )

Array3
    (
        [0] => 3412
        [1] => 7512
        [2] => 2454
        [4] => 1476
    )

结果数组将只包含 [0] => 1476

最好的方法是什么?我一直在寻找一个以这种方式比较数组的函数,但我没有运气。有什么想法吗?

非常感谢任何帮助!

【问题讨论】:

    标签: php arrays filter


    【解决方案1】:

    最好的选择是使用 php 的内置 array-intersect 函数。

    $answer =  array_intersect($Array1,$Array2,$Array3);
    

    【讨论】:

      【解决方案2】:

      遍历你的第一个数组,使用in_array检查第二个和第三个数组,像这样:

      foreach($array1 as $post_id) {
          if(in_array($post_id, $array2) && in_array($post_id, $array3)) {
              // We have a winner!
          }
      }
      

      【讨论】:

        【解决方案3】:

        创建一个新数组。

        将第一个数组的所有元素添加到新数组中。

        遍历所有其他元素,找出新数组中的哪些元素在要比较的数组中。删除所有未出现的元素。

        在你的迭代结束时,你有你想要的数组。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-10-23
          • 2016-02-09
          • 2011-08-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-05-01
          相关资源
          最近更新 更多