我想要比较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
)
为什么会这样?
答案 0 :(得分: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
答案 1 :(得分: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]);
}
}
}
}
这不是经过测试,而是从我的头脑中进行测试。