본문 바로가기
PROGRAMMING/PHP

PHP array_unique() 배열 중복 값 제거

by itengineer 2023. 7. 7.
반응형

 

array_unique()

array_unique() 함수는 PHP에서 사용되는 배열에서 중복된 값을 제거하는 함수입니다. 이 함수는 중복된 값을 제거한 새로운 배열을 반환합니다.

다음은 array_unique() 함수의 구문입니다.

array_unique(array $array [, int $flags = SORT_STRING ]) : array




- $array: 중복된 값을 제거할 배열입니다.
- $flags (옵션): 비교 시 사용할 정렬 플래그입니다. 기본값은 SORT_STRING으로, 문자열로 변환하여 비교합니다. 다른 플래그로 SORT_NUMERIC, SORT_REGULAR, SORT_LOCALE_STRING 등을 사용할 수 있습니다.

다음은 array_unique() 함수를 사용하여 배열에서 중복된 값을 제거하는 예입니다.

$numbers = array(1, 2, 3, 2, 4, 3, 5);
$uniqueNumbers = array_unique($numbers);

print_r($uniqueNumbers);


출력

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [4] => 4
    [6] => 5
)



위의 예제에서는 $numbers 배열에서 중복된 값을 제거하여 $uniqueNumbers 배열을 생성합니다. array_unique() 함수는 중복된 값을 제거하고 처음 등장하는 값만 유지하는 새로운 배열을 반환합니다.

array_unique() 함수를 사용할 때, 기본적으로는 SORT_STRING 플래그를 사용하여 문자열로 변환한 후 비교합니다. 따라서 정수 형태의 숫자와 문자열 형태의 숫자는 다른 값으로 간주됩니다. 이를 해결하기 위해 숫자 형태로 비교하려면 SORT_NUMERIC 플래그를 사용하면 됩니다. 

$numbers = array(1, '2', '3', 2, 4, 3, '5');
$uniqueNumbers = array_unique($numbers, SORT_NUMERIC);

print_r($uniqueNumbers);


출력

Array
(
    [0] => 1
    [1] => 2
    [2] => 4
)




위의 예제에서는 $numbers 배열에서 숫자로 비교하여 중복된 값을 제거합니다. 따라서 문자열 형태의 숫자 2, 3, 5는 숫자로 변환된 후 중복 제거가 되며, 숫자로 변환한 값 2와 3은 중복된 값으로 간주되어 제거됩니다.

array_unique() 함수를 사용하여 배열에서 중복된 값을 제거할 수 있으며, 필요에 따라 정렬 플래그를 사용하여 비교 방식을 변경할 수도 있습니다.

 

다음은 array_unique() 함수를 사용한 몇 가지 예입니다.

  • 중복 항목 제거: 배열에서 중복된 항목을 제거해야 할 때 array_unique() 함수를 사용할 수 있습니다. 예를 들어, 설문 조사 양식에서 중복된 선택지를 제거하거나 사용자가 입력한 태그 목록에서 중복 태그를 제거할 수 있습니다.
$options = ["red", "blue", "green", "red", "yellow", "blue"];

// 중복된 항목을 제거한 새로운 배열 생성
$uniqueOptions = array_unique($options);
// $uniqueOptions = ["red", "blue", "green", "yellow"]

$tags = ["php", "web", "php", "development", "web"];

// 중복된 태그를 제거한 새로운 배열 생성
$uniqueTags = array_unique($tags);
// $uniqueTags = ["php", "web", "development"]

  • 배열 결합 후 중복 제거: 두 개 이상의 배열을 결합한 후 중복된 값을 제거해야 할 때 array_unique() 함수를 사용할 수 있습니다. 예를 들어, 여러 사용자 목록에서 중복된 사용자를 제거하거나 두 개의 배열에서 공통된 값을 찾을 수 있습니다.

$users1 = ["john", "mary", "peter"];
$users2 = ["peter", "steve", "mary"];

// 두 배열을 결합한 후 중복된 값을 제거한 새로운 배열 생성
$uniqueUsers = array_unique(array_merge($users1, $users2));
// $uniqueUsers = ["john", "mary", "peter", "steve"]

  • 객체 배열에서 중복 객체 제거: 객체로 구성된 배열에서 중복된 객체를 제거해야 할 때 array_unique() 함수를 사용할 수 있습니다. 이 경우 객체의 속성을 기반으로 중복 여부를 판단합니다.
class User {
    public $name;
    public $email;

    public function __construct($name, $email) {
        $this->name = $name;
        $this->email = $email;
    }
}

$users = [
    new User("John", "john@example.com"),
    new User("Mary", "mary@example.com"),
    new User("John", "john@example.com"),
    new User("Peter", "peter@example.com")
];

// 중복된 사용자 객체를 제거한 새로운 배열 생성
$uniqueUsers = array_unique($users);
// $uniqueUsers = [
//     User("John", "john@example.com"),
//     User("Mary", "mary@example.com"),
//     User("Peter", "peter@example.com")
// ]



이러한 예는 array_unique() 함수의 일부 활용 방법을 보여줍니다. 실제로 array_unique() 함수는 배열에서 중복된 값을 제거하는 데 유용하며, 데이터 정제 및 중복 처리 작업에 활용될 수 있습니다.

 

반응형

댓글