본문 바로가기
PROGRAMMING/PHP

PHP array_multisort() 배열 정렬 다차원 배열 정렬

by itengineer 2023. 7. 10.
반응형

array_multisort() 함수는 PHP에서 사용되는 여러 개의 배열을 동시에 정렬하는 함수입니다. 이 함수는 주어진 배열들을 정렬하고 원래 배열의 인덱스를 유지하며, 정렬된 결과를 반환합니다.

다음은 array_multisort() 함수의 구문입니다.


array_multisort(array &$array1 [, mixed $array1_sort_order = SORT_ASC [, mixed $array1_sort_flags = SORT_REGULAR [, mixed $... ]]]): bool




- &$array1: 정렬할 첫 번째 배열입니다. 이 배열은 참조로 전달되므로 원래 배열이 수정됩니다.
- $array1_sort_order (옵션): 첫 번째 배열의 정렬 순서를 지정합니다. SORT_ASC (오름차순) 또는 SORT_DESC (내림차순) 상수를 사용합니다. 기본값은 SORT_ASC입니다.
- $array1_sort_flags (옵션): 첫 번째 배열의 정렬 방식을 지정합니다. SORT_REGULAR (일반 정렬), SORT_NUMERIC (숫자 정렬), SORT_STRING (문자열 정렬), SORT_LOCALE_STRING (로캘 문자열 정렬) 등의 상수를 사용합니다. 기본값은 SORT_REGULAR입니다.
- $... (옵션): 추가로 정렬할 배열들입니다. 첫 번째 배열과 동일한 정렬 순서와 정렬 방식이 적용됩니다.


예를 들어, 우리가 학생들의 정보를 담은 배열을 가지고 있다고 가정해봅시다. 각 학생은 이름, 나이, 성적을 가지고 있습니다. 우리는 이 배열을 성적순으로 정렬하고자 합니다. 이때 array_multisort() 함수를 사용할 수 있습니다.


$students = array(
    array('name' => 'John', 'age' => 20, 'grade' => 'B'),
    array('name' => 'Jane', 'age' => 22, 'grade' => 'A'),
    array('name' => 'Bob', 'age' => 21, 'grade' => 'C'),
);

// 성적을 기준으로 내림차순으로 정렬
$grades = array_column($students, 'grade');
$ages = array_column($students, 'age');

array_multisort($grades, SORT_DESC, $ages, $students);

print_r($students);
// 출력
Array
(
    [0] => Array
        (
            [name] => Jane
            [age] => 22
            [grade] => A
        )

    [1] => Array
        (
            [name] => John
            [age] => 20
            [grade] => B
        )

    [2] => Array
        (
            [name] => Bob
            [age] => 21
            [grade] => C
        )
)




위의 예시에서는 $students 배열을 array_multisort() 함수로 정렬합니다. 먼저, array_column() 함수를 사용하여 $students 배열에서 grade 열과 age 열의 값을 추출합니다. 그런 다음, array_multisort() 함수를 사용하여 grade 열을 내림차순으로, 그리고 age 열을 같이 정렬합니다. 이렇게 하면 성적순으로 학생들이 정렬되고, 동일한 성적을 가진 학생들은 나이를 기준으로 정렬됩니다.

이처럼 array_multisort() 함수는 다차원 배열에서 여러 개의 열(column)을 동시에 정렬하는 데 사용될 수 있습니다. 데이터를 현실적인 상황에 맞게 정렬할 수 있으며, 필요에 따라 정렬 우선순위를 지정할 수 있습니다.

 

array_column() 사용법은 여기

반응형

댓글