PHP의 usort() 함수는 사용자가 직접 정의한 비교 함수를 기준으로 배열의 값을 정렬하는 내장 함수입니다. 기본 정렬 함수로 처리하기 어려운 복잡한 조건이 필요할 때 특히 유용하며, 정렬이 완료된 후에는 원래의 키가 유지되지 않고 새로운 숫자 인덱스로 재할당된다는 점에 유의해야 합니다.
문법
usort(arr, custom_function)
매개변수
arr − 정렬하고자 하는 대상 배열입니다.
custom_function − 요소를 비교하는 데 사용되는 콜백(비교) 함수입니다. 첫 번째 인수가 두 번째 인수보다 작으면 0보다 작은 정수를, 같으면 0을, 크면 0보다 큰 정수를 반환해야 합니다.
반환값
usort() 함수는 정렬에 성공하면 TRUE, 실패하면 FALSE를 반환합니다.
예제
다음은 usort() 함수를 활용해 숫자 배열을 오름차순으로 정렬하는 예제입니다.
<?php
function display($x, $y) {
if ($x == $y) return 0;
return ($x < $y) ? -1 : 1;
}
$myarr = array(39, 23, 78, 55, 99, 120);
usort($myarr, "display");
for ($i = 0; $i < count($myarr); $i++) {
echo $myarr[$i];
echo "<br>";
}
?>출력 결과
위 예제의 실행 결과는 다음과 같습니다.
23
39
55
78
99
120
팁: 우주선 연산자(<=>)로 더 간결하게
PHP 7부터 도입된 우주선 연산자(spaceship operator, <=>)를 사용하면 비교 함수를 훨씬 간결하게 작성할 수 있습니다.
usort($myarr, function($x, $y) {
return $x <=> $y;
});이처럼 usort()는 익명 함수와 함께 사용하면 객체 속성 비교, 다중 조건 정렬 등 다양한 상황에 유연하게 대응할 수 있는 강력한 정렬 도구입니다.