PHP의 uasort() 함수는 사용자가 직접 정의한 비교 함수(콜백 함수)를 기준으로 배열을 정렬하며, 정렬 과정에서 키(key)와 값(value) 사이의 연관 관계를 그대로 유지하는 것이 특징입니다.
일반적인 sort() 함수와 달리 uasort()는 연관 배열의 키를 재설정하지 않기 때문에, 키-값 쌍이 중요한 데이터를 다룰 때 특히 유용합니다.
문법(Syntax)
uasort(arr, custom_function)
매개변수(Parameters)
arr − 정렬하고자 하는 대상 배열입니다.
custom_function − 요소를 비교하는 데 사용되는 콜백 함수입니다. 이 함수는 반드시 정수를 반환해야 하며, 반환값의 의미는 다음과 같습니다.
- 첫 번째 인수가 두 번째 인수보다 작으면 → 0보다 작은 정수(예: -1)
- 첫 번째 인수가 두 번째 인수와 같으면 → 0
- 첫 번째 인수가 두 번째 인수보다 크면 → 0보다 큰 정수(예: 1)
반환값(Return)
uasort() 함수는 정렬에 성공하면 TRUE를, 실패하면 FALSE를 반환합니다.
사용 예제(Example)
다음은 uasort() 함수를 활용해 연관 배열을 값 기준으로 오름차순 정렬하는 예제입니다.
<?php
function display($x,$y) {
if ($x==$y) return 0;
return ($x<$y)?-1:1;
}
$myarr = array("a"=>30,"b"=>12,"c"=>75);
uasort($myarr,"display");
foreach($myarr as $x=>$x_value) {
echo "Key=" . $x . " Value=" . $x_value;
echo "<br>";
}
?>실행 결과(Output)
위 코드를 실행하면 아래와 같이 값이 오름차순으로 정렬되고, 원래의 키(a, b, c)가 그대로 유지되는 것을 확인할 수 있습니다.
Key=b Value=12 Key=a Value=30 Key=c Value=75
정리
uasort()는 사용자 정의 비교 로직이 필요하면서도 배열의 키를 보존해야 할 때 가장 적합한 정렬 함수입니다. 객체 배열을 특정 속성 기준으로 정렬하거나, 복잡한 조건으로 값을 비교해야 하는 경우에도 폭넓게 활용할 수 있습니다.