2013-03-20 2 views
1

나는 2 개의 어레이를 가지고 있는데, 그 중 하나를 비교하고 차이를 수집하려고합니다.2 배열을 비교하고 차이를 얻는 방법

각 배열에 2 개의 요소 만 표시합니다. 일반적으로 각 배열 이상 80000 개 요소

가 배열 1 출력 ($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) 

배열 1 출력

원하는 출력이

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) 
( $result)

포함

[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 (
    [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 
    ) 

왜 이런 일이 :

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

하지만 난이 출력 무엇입니까?

+2

배열이 데이터베이스 요청에서 작성된 경우 DB 쿼리에서 처리하는 것이 더 좋습니다. –

+0

예 일반적으로 수행 할 수도 있지만 다른 원인으로는 수행 할 수 없습니다. PHP를 통해이 작업을 수행 할 수 있습니까? – Zaz

+0

가능한 복제본 [두 배열을 반복하고 결과를 비교하여 일치하지 않는 결과를 표시] (http://stackoverflow.com/questions/15413936/iterate-through-two-arrays-and-compare-results-to-display -results-that-do-not-ma) – jvnill

답변

0

PHP의 array_dif() 함수를 사용하십시오. 2 개의 배열을 비교하여 일치하지 않는 항목을 출력합니다. 유일한 편도 비교하지만 배열 2와 배열 1을 비교하면 배열 1의 미분 값이 나옵니다. 1과 2를 비교하려면 역순으로 실행해야합니다. 그러면 2 개의 출력 배열이 남습니다.

그러면 2를 함께 배열하여 하나의 마스터 배열을 얻을 수 있습니다. 그게 당신이 찾고 있던거야.

참조 : 이미 방법이 문제를 해결하는 좋은 힌트를 가지고 있지만 http://php.net/manual/en/function.array-diff.php http://www.php.net/manual/en/function.array-merge.php

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]); 
        } 
     } 
     } 
    } 

이것은 테스트되지 않았으며 머리 부분부터 테스트되었습니다.

관련 문제