Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP 연관 배열에서 중복 요소 제거하기 – array_map 활용법

PHP의 array_map 함수는 배열의 모든 요소 값을 사용자 정의 함수에 전달합니다. 그리고 배열의 각 요소에 해당 함수를 적용한 결과로 새로운 값들로 구성된 배열을 반환합니다.

array_map 함수 문법

array_map(user_defined_function, array_1, array_2, array_3…)

사용자 정의 함수와 array_1은 필수 인자이며, array_2array_3부터는 선택적으로 지정할 수 있습니다.

예제

$result = array(
    0=>array('a'=>1,'b'=>'Hello'),
    1=>array('a'=>1,'b'=>'duplicate_val'),
    2=>array('a'=>1,'b'=>'duplicate_val')
);
$unique = array_map("unserialize", array_unique(array_map("serialize", $result)));
print_r($unique);

출력 결과

위 코드를 실행하면 다음과 같은 출력이 생성됩니다.

Array ( [0] => Array ( [a] => 1 [b] => Hello ) [1] => Array ( [a] => 1 [b] => duplicate_val ) )

위 코드에서는 3개의 요소로 구성된 다차원 배열을 정의하여 result라는 변수에 할당했습니다. 이후 array_map 함수가 호출되고 result 값이 매개변수로 전달됩니다.

핵심 아이디어는 다음과 같습니다. array_unique 함수는 중첩된 배열을 직접 비교할 수 없기 때문에, 먼저 serialize 함수로 각 하위 배열을 문자열로 변환합니다. 문자열 상태에서 중복을 제거한 뒤, unserialize 함수를 통해 원래의 배열 형태로 복원하는 방식입니다.

최종 출력 결과를 보면 result 변수의 내용 중 중복되었던 두 번째와 세 번째 요소가 하나로 합쳐져, 중복이 제거된 배열이 반환된 것을 확인할 수 있습니다.