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

PHP 배열에서 중복 요소 제거하기

PHP에서는 array_flip 함수를 사용하여 배열의 중복 요소를 간단하게 제거할 수 있습니다. 이 함수는 배열의 키(key)와 값(value)을 서로 뒤바꾸는 역할을 하는데, 이 특성을 활용하면 중복된 값을 자연스럽게 걸러낼 수 있습니다.

예제 코드

<?php
    $my_arr = array(45, 65, 67, 99, 81, 90, 99, 45, 68);
    echo "원본 배열:\n";
    print_r($my_arr);
    $my_arr = array_flip($my_arr);
    $my_arr = array_flip($my_arr);
    $my_arr = array_values($my_arr);
    echo "\n중복 요소가 제거된 배열:\n ";
    print_r($my_arr);
?>

실행 결과

원본 배열:
Array
(
    [0] => 45
    [1] => 65
    [2] => 67
    [3] => 99
    [4] => 81
    [5] => 90
    [6] => 99
    [7] => 45
    [8] => 68
)

중복 요소가 제거된 배열:
Array
(
    [0] => 45
    [1] => 65
    [2] => 67
    [3] => 99
    [4] => 81
    [5] => 90
    [6] => 68
)

동작 원리

먼저 배열을 정의한 뒤, array_flip 함수를 호출하여 키와 값을 서로 뒤집습니다. 이 과정에서 기존의 값들이 새로운 키(인덱스)가 되는데, 배열의 키는 반드시 고유해야 하기 때문에 중복된 값은 하나만 남게 됩니다.

이후 array_flip 함수를 한 번 더 실행하여 원래의 키-값 구조로 되돌리고, 마지막으로 array_values 함수를 적용해 인덱스를 0부터 시작하는 연속된 숫자로 재정렬합니다. 그 결과 위 출력과 같이 중복 없이 깔끔하게 정리된 배열을 얻을 수 있습니다.

대안: array_unique 함수

PHP에서는 array_unique 함수를 통해서도 동일한 결과를 얻을 수 있습니다. 이 함수는 배열 내 중복된 값을 제거하고 고유한 값만 남겨주며, 코드가 더 직관적이라는 장점이 있습니다.

<?php
    $my_arr = array(45, 65, 67, 99, 81, 90, 99, 45, 68);
    $result = array_values(array_unique($my_arr));
    print_r($result);
?>

다만 array_unique는 내부적으로 모든 요소를 비교하는 방식으로 동작하기 때문에, 대규모 배열에서는 array_flip을 두 번 사용하는 방식이 더 빠른 성능을 보이는 경우도 있습니다. 상황에 맞게 적절한 방법을 선택하시기 바랍니다.