Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP에서 usort() 함수로 다차원 배열 정렬하는 방법

PHP에서 usort() 함수를 사용하면 사용자가 정의한 기준에 따라 배열을 정렬할 수 있습니다. 특히 다차원 배열처럼 복잡한 구조의 데이터를 원하는 방식으로 정렬해야 할 때 매우 유용합니다.

usort() 함수는 두 개의 인자를 받습니다. 첫 번째는 정렬할 배열이고, 두 번째는 정렬 기준을 판단하는 콜백 함수입니다. 콜백 함수는 두 요소를 비교하여 첫 번째 값이 작으면 -1, 같으면 0, 크면 1을 반환하도록 작성합니다.

예제 코드

<?php
function my_sort($a,$b) {
   if ($a==$b) return 0;
   return ($a<$b)?-1:1;
}
$a=array(4,2,81,63);
usort($a,"my_sort");
$arrlength=count($a);
for($x=0;$x<$arrlength;$x++) {
   echo $a[$x];
   echo "<br>";
}
?>

실행 결과

위 코드를 실행하면 아래와 같이 오름차순으로 정렬된 결과가 출력됩니다.

2
4
63
81

코드 설명

먼저 4개의 요소(4, 2, 81, 63)를 가진 배열을 선언합니다. 이후 이 배열을 usort() 함수에 전달하고, 사용자가 직접 정의한 my_sort() 함수를 콜백으로 호출하여 각 요소를 비교합니다.

my_sort() 함수 내부에서는 두 값을 비교하여 오름차순 정렬이 이루어지도록 처리합니다. 두 값이 같으면 0을 반환하고, 첫 번째 값이 더 작으면 -1, 그렇지 않으면 1을 반환합니다. 그 결과 배열은 2, 4, 63, 81 순서로 정렬되며, 반복문을 통해 각 요소가 한 줄씩 출력됩니다.

참고로 PHP 7.4 이상에서는 화살표 함수(arrow function)를 활용해 더 간결하게 작성할 수 있으며, 다차원 배열을 정렬할 때는 비교 대상이 되는 하위 키 값을 콜백 함수 안에서 지정해 주면 됩니다.