PHP 버전
4.0.1+
$array = [1, 2, 3, 1, 2, 4];
$unique_array = array_unique($array);

// 원본 배열은 그대로 유지하고 새로운 배열을 반환
print_r($unique_array);
출력
array_unique(array $array, int $flags = SORT_STRING): array
$a = [0, 0];
$b = array_unique($a, SORT_STRING);

// 새로운 요소를 추가해 봅니다.
$b[] = 1;

print_r($b);

/* --------------------------------------------------
 * [PHP 7.2.0 이전 버전 출력 결과]
 *
 * Array
 * (
 *     [0] => 0
 *     [2] => 1  <-- 삭제된 요소의 영향으로 다음 숫자 인덱스가 2가 됨
 * )
 *
 * [설명]
 * 기존 배열에서 중복된 요소를 제거하는 방식으로 처리했기 때문에,
 * 삭제된 요소의 숫자 인덱스 정보가 남아 새로운 요소는 2번 인덱스에 추가됩니다.
 * -------------------------------------------------- */

/* --------------------------------------------------
 * [PHP 7.2.0 버전부터 출력 결과]
 *
 * Array
 * (
 *     [0] => 0
 *     [1] => 1  <-- 새로운 배열 구성으로 다음 숫자 인덱스가 1이 됨
 * )
 *
 * [설명]
 * 중복되지 않은 요소만 추가하여 새로운 배열을 구성하는 방식으로
 * 변경되어 새로운 요소는 1번 인덱스에 추가됩니다.
 * -------------------------------------------------- */
$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, SORT_REGULAR)
 *
 * [설명]
 * 데이터 유형을 변경하지 않고 비교합니다(느슨한 비교 == 적용).
 *
 * 정수 1과 문자열 '1'은 서로 같은 값으로 평가되므로
 * 문자열 '1'은 중복으로 제거됩니다.
 *
 * 문자열 '01'과 '02'도 숫자 값과 비교되어
 * 각각 정수 1과 2와 같은 값으로 평가되므로 중복으로 제거됩니다.
 */
$sort_regular = array_unique($array, SORT_REGULAR);

var_dump($sort_regular);

/*
	array(3) {
		[0]=> int(1)
		[1]=> int(2)
		[3]=> int(3)
	}
*/

/*
 * SORT_NUMERIC
 * array_unique($array, SORT_NUMERIC)
 *
 * [설명]
 * 모든 요소를 숫자 데이터 유형으로 변환한 후 비교합니다.
 *
 * 문자열 '01'과 '02'도 숫자 1과 2로 변환되므로
 * 기존 숫자 1, 2와 중복되어 제거됩니다.
 */
$sort_numeric = array_unique($array, SORT_NUMERIC);

var_dump($sort_numeric);

/*
	array(3) {
		[0]=> int(1)
		[1]=> int(2)
		[3]=> int(3)
	}
*/

/*
 * SORT_STRING
 * array_unique($array, SORT_STRING) - 기본값
 *
 * [설명]
 * 모든 요소를 문자열 데이터 유형으로 변환한 후 비교합니다.
 *
 * 정수 1은 문자열 "1"로 변환되어 문자열 '1'과 같은 값으로 평가되므로
 * 중복으로 제거됩니다.
 *
 * 반면 문자열 '01'은 "01" 그대로 비교되므로
 * "1"과 다르게 취급되어 유지됩니다.
 */
$sort_string = array_unique($array, SORT_STRING);

var_dump($sort_string);

/*
	array(5) {
		[0]=> int(1)
		[1]=> int(2)
		[3]=> int(3)
		[6]=> string(2) "01"
		[7]=> string(2) "02"
	}
*/
$array = [
	'a' => 'green',
	'b' => 'green',
	'c' => 'orange'
];
$result = array_unique($array);

print_r($result);
/*
	Array (
		[a] => green
		[c] => orange
	)
*/
$array = [
    'a' => 'green',
    'red',
    'b' => 'green',
    'blue',
    'red'
];
$result = array_unique($array);

print_r($result);
/*
    Array (
        [a] => green
        [0] => red
        [1] => blue
    )
*/