array_unique()
함수의 정의 및 사용법
array_unique()
함수는
주어진 배열 내의 중복된 값들을 제거하고 고유한(unique) 값만 남긴 배열을 반환합니다.
이 함수는 배열에 동일한 값이 여러 번 존재하는 경우 처음 등장하는 값만 유지하고 나머지는 제거한 배열을 반환하는 함수입니다.
주의!
array_unique()
함수는 다차원 배열에서 작동하도록 고안되지 않았습니다.
array_unique()
함수의 형식은 다음과 같습니다.
$array = [1, 2, 3, 1, 2, 4];
$unique_array = array_unique($array);
print_r($unique_array);
/*
Array (
[0] => 1
[1] => 2
[2] => 3
[5] => 4
)
*/
array_unique()
함수는 입력 배열의 키를 보존합니다.
즉, 중복된 값이 제거되더라도 원래 배열의 키는 그대로 유지됩니다.
구문
array_unique(array $array, int $flags = SORT_STRING): array
매개변수
$array |
필수. 중복된 값을 제거하려는 배열입니다. |
---|---|
$flags |
옵션. 중복 요소를 비교하는 방법을 지정하는 플래그입니다.
다음과 같은 플래그를 사용할 수 있습니다.
|
참고: SORT_LOCALE_STRING
: 현재 로케일(locale)을 기반으로 문자열 비교
현재 설정된 로케일(locale) 설정을 기반으로 비교하는 것을 의미합니다. 로케일은 언어, 국가 및 기타 지역 특성에 따라 정렬 및 비교 규칙을 정의합니다. 예를 들어, 특정 언어에서는 대소문자를 구분, 특수문자가 포함된 문자의 구분 등이 있으며, 이러한 차이를 반영하여 문자열을 비교하는 것입니다.
반환 값
- 배열에 동일한 값이 여러 번 존재하는 경우 처음 등장하는 값만 유지하고 나머지는 제거한 고유한(unique) 값만 남긴 배열을 반환합니다.
- 중복된 값이 제거되더라도 원래 배열의 키는 그대로 유지됩니다.
중복 요소를 비교하는 방법에 따른 반환 값
대소문자 구분
array_unique()
함수는 대소문자를 구분합니다.
$array = ['a', 'b', 'c', 'A', 'B', 'C'];
$unique_array = array_unique($array);
print_r($unique_array );
/*
Array (
[0] => a
[1] => b
[2] => c
[3] => A
[4] => B
[5] => C
)
*/
숫자와 문자열 구분
숫자와 문자열 구분을 중복 요소를 비교하는 방법을 지정하는 플래그를 통해 알아보겠습니다.
$array = [1, 2, 01, 03, '1', '2', '01', '02'];
$sort_regular = array_unique($array); // array_unique($array, SORT_REGULAR)와 동일
/*
* SORT_REGULAR
* 데이터 유형을 변경하지 않음
* 숫자형 문자열는 숫자 값을 숫자 데이터 유형과 비교
* => '1'은 숫자 값 1과 중복
* 유효하지 않은 숫자 데이터 유형는 유효한 숫자로 취급하여 변환
* => 01은 1로, 03은 3으로 변환
*/
var_dump($sort_regular);
/*
array(5) {
[0]=> int(1)
[1]=> int(2)
[3]=> int(3)
[6]=> string(2) "01"
[7]=> string(2) "02"
}
*/
$sort_numeric = array_unique($array, SORT_NUMERIC);
/*
* SORT_NUMERIC
* 숫자 데이터 유형으로 변경해서 비교
* 유효하지 않은 숫자는 유효한 숫자로 변환
* => 01은 1로, 03은 3으로 변환
* 숫자형 문자열 데이터 유형도 숫자 데이터 유형으로 변경해서 비교하기 때문에
* => '01'은 1로, '03'은 3으로 변환해서 비교
*/
var_dump($sort_numeric);
/*
array(3) {
[0]=> int(1)
[1]=> int(2)
[3]=> int(3)
}
*/
$sort_string = array_unique($array, SORT_STRING);
/*
* SORT_NUMERIC
* 문자열 데이터로 변경해서 비교
* 숫자형 문자열는 숫자 값을 숫자 데이터 유형과 비교
* => '1'은 숫자 값 1과 중복
* 유효하지 않은 숫자 데이터 유형는 유효한 숫자로 취급하여 변환
* => 01은 1로, 03은 3으로 변환
*/
var_dump($sort_string);
/*
array(5) {
[0]=> int(1)
[1]=> int(2)
[3]=> int(3)
[6]=> string(2)"01"
[7]=> string(2) "02"
}
*/
연관 배열에서의 반환 값
연관 배열은 각 요소에 문자열 또는 정수가 아닌 사용자가 지정한 키를 사용하여 접근할 수 있는 배열입니다.
이러한 키-값 쌍은 배열의 요소를 식별하는 데 사용됩니다.
array_unique()
함수를 사용해서 중복된 값을 제거할 때 키가 아닌 값을 기준으로 비교합니다.
$array = [
'a' => 'green',
'b' => 'green',
'c' => 'orange'
];
$result = array_unique($array);
print_r($result);
/*
Array (
[a] => green
[c] => orange
)
*/
혼합 배열에서의 반환 값
인덱스 배열과 연관 배열이 함께 있는 경우, 이를 "혼합 배열(Mixed Array)"이라고 합니다.
혼합 배열은 숫자로 된 인덱스와 문자열로 된 키를 모두 가지는 배열을 나타냅니다. 이러한 배열은 PHP에서 다양한 데이터 구조를 표현할 때 사용됩니다.
array_unique()
함수를 사용해서 중복된 값을 제거할 때 인덱스 배열이나 연관 배열도 키가 아닌 값을 기준으로 비교합니다.
$array = [
'a' => 'green',
'red',
'b' => 'green',
'blue',
'red'
];
$result = array_unique($array);
print_r($result);
/*
Array (
[a] => green
[0] => red
[1] => blue
)
*/