1

我有 2 个要比较的数组,然后收集差异。

我只在每个数组中显示 2 个元素。通常每个数组包含超过 80000 个元素

Array1 输出 ( $Memcooltransactions)

    Array ( 
[0] => Array ( [zipcode] => 0000 [city] => 23593 Vellinge, Sverige [numberofuniqmembers] => 11 [numberofuniqspisesteder] => 0 
[1] => Array ( [zipcode] => 4212 [city] => CPH, Denmark [numberofuniqmembers] => 2 [numberofuniqspisesteder] => 0 )

Array1 输出 ( $result)

    Array ( 
[0] => Array ( [zipcode] => 0460 [city] => Nordskali, Færøerne [numberofuniqmembers] => 1 [numberofuniqspisesteder] => 0 
[1] => Array ( [zipcode] => 4212 [city] => CPH, Denmark [numberofuniqmembers] => 2 [numberofuniqspisesteder] => 0 )

期望的输出:

 [0] => Array ( [zipcode] => 0000 [city] => 23593 Vellinge, Sverige [numberofuniqmembers] => 11 [numberofuniqspisesteder] => 0 
[1] => Array ( [zipcode] => 0460 [city] => Nordskali, Færøerne [numberofuniqmembers] => 1 [numberofuniqspisesteder] => 0 

这就是我尝试的方式:

$result2 = array_diff_assoc($Memcooltransactions, $result1);

但我得到这个输出:($result2

 Array (
    [0] => Array ( [zipcode] => 0000 [city] => 23593 Vellinge, Sverige [numberofuniqmembers] => 11 [numberofuniqspisesteder] => 0 
    [1] => Array ( [zipcode] => 4212 [city] => CPH, Denmark [numberofuniqmembers] => 2 [numberofuniqspisesteder] => 0
    [2] => Array ( [zipcode] => 0460 [city] => Nordskali, Færøerne [numberofuniqmembers] => 1 [numberofuniqspisesteder] => 0 
   )

为什么会这样?

4

2 回答 2

0

尽管您已经有很好的提示如何解决这个问题,但还有另一个提示。

    $array_a; // array 1
    $array_b; // array 2
    $array_c = array(); // result array

    function($array_a , $array_b) {
      foreach($array_a as $keya => $valuea) {

        foreach(array_b as $keyb => $valueb) {

                  if($valuea['city'] = $valueb['city']){
                        array_push($array_c, $array_b[$key]);
                  }
        }
      }
   }

这没有经过测试,并且来自我的头顶。

于 2013-03-20T13:46:23.863 回答
0

使用 php 的 array_dif() 函数。它比较 2 个数组并输出不匹配的内容。它只是一种单向比较,因此您将数组 2 与数组 1 进行比较,它会吐出数组 1 的差异。如果您想将 1 与 2 进行比较,那么您也必须以相反的方式运行它。这将为您留下 2 个输出数组。

然后你可以 array_merge() 2 一起给你一个主数组。这就是你要找的。

参考: http: //php.net/manual/en/function.array-diff.php http://www.php.net/manual/en/function.array-merge.php

于 2013-03-20T13:16:59.363 回答