2013-06-17 4 views
0

이것은 약간 기본 일지 모르지만 그것은 엉덩이를 걷어차 고 있습니다.여러 필드를 기반으로 다차원 배열에서 중복을 제거하십시오.

$newArray = array(); 
foreach (array_reverse($results) as $val) { 
    $newArray[$val['last_name']] = $val; 
} 
$results = array_values($newArray); 

이 코드는 성공적으로 사람의 성을 기반으로 다차원 배열에서 중복을 제거합니다

나는 추적 코드가 있습니다.

존 스미스와 수잔 스미스가있을 수 있다는 사실에는 문제가 있습니다. 분명히이 두 항목을 모두 유지하려고합니다.

나는 [ 'last_name'] 필드 외에도 몇 가지 다른 정보를 기반으로 해당 중복을 제거 할 수있는 도움이 필요합니다. 사람 이름 [ 'first_name']과 이벤트 [ 'event_id']도 등록했습니다.

어떤 통찰력이라도 대단히 감사하겠습니다. 위에서 말했듯이 이것은 일종의 초등학생 일 수도 있지만 하루 종일 두통을 줘서 도움이 될 것입니다.

답변

0

아마도 이름과 성 또는 더 많은 필드의 조합에 따라 사용자를 구성 할 수 있습니다.

$newArray = array(); 

foreach (array_reverse($results) as $val) { 
    $newArray[ $val['last_name'] . ', ' . $newArray[$val['first_name'] ] = $val; 
} 

$results = array_values($newArray); 

이와 유사한 방법으로 중복 된 사용자는 유사한 사용자를 유지하면서 필터링 될 수 있습니다. 어딘가에 이벤트 ID를 추가 할 수 있습니다. 이렇게하면 레코드를 좀 더 복잡하게 만들 수 있습니다.

+0

입력 bc의 Thx이며 언뜻 보면 효과가있는 것으로 보입니다. 그러나 나는 내가 가진 문제를 다시 생각하고 다른 접근법을 채택하기로 결정했다. –

관련 문제