티스토리 뷰

728x90

array_multisort()는 여러 배열을 한 번에 정렬하거나, 다차원 배열을 정렬할 수 있는 함수이다.

연관(문자열) 키는 유지되지만 숫자 키는 새로 인덱스 된다.

📘 사용구문

array_multisort(array $array1, 
    mixed $array1_sort_order=SORT_ASC, 
    mixed $array1_sort_flags=SORT_REGULAR, 
    mixed .... $rest
);
/**
* $array1	: 정렬할 배열
* $array1_sort_order :
*	이전 배열 인수($array1)를 정렬하는 데 사용되는 순서 SORT_ASC(오름차순), SORT_DESC(내림차순)
*	이 인수는 $array1_sort_flags로 바꾸거나, 완전히 생략 할수 있으며, 기본값 SORT_ASC
* $array1_sort_flags : 
*	이전 배열 인수($array1)에 대한 정렬 옵션
*	이 인수는 $array1_sort_order로 바꾸거나, 완전히 생략 할수 있으며, 기본값 SORT_REGULAR
* $rest	: 정렬할 추가 배열, 정렬순서 및 플래그 선택적 설정
*/

 

💡 정렬순서(sort order)

정렬순서(sort order) 설 명
SORT_ASC a-z, 1-9 순의 오름차순 정렬
SORT_DESC z-a, 9-1 순의 내림차순 정렬

 

💡 정렬유형(sort type)

정렬유형(sort type) 설 명
SORT_REGULAR 일반적인 정렬(sort와 동일한 기능)
SORT_NUMERIC 숫자 비교 정렬
SORT_STRING 문자열 비교 정렬
SORT_LOCALE_STRING 현재 로케일에 기반 문자열로 원소 정렬
SORT_NATURAL natsort() 처럼 자연순 정렬
SORT_FLAG_CASE 문자열을 대소문자를 구분하지 않고 정렬(SORT_STRING, SORT_NATURAL 와 결합)

 

📌 사용예제

// 여러 배열 정렬
$array1 = [10, 100, 100, 0];
$array2 = [1, 3, 2, 4];
array_multisort($array1, $array2);
var_dump($array1);
/*
array(4)
{
    [0]=> int(0)
    [1]=> int(10)
    [2]=> int(100)
    [3]=> int(100)
}
*/
var_dump($array2);
/*
array(4)
{
    [0]=> int(4)
    [1]=> int(1)
    [2]=> int(2)
    [3]=> int(3)
}
*/

// 다차원 배열 정렬
$array = [
	["10", 11, 100, 100, "a"],
    [1, 2, "2", 3, 1]
];
array_multisort($array[0], SORT_ASC, SORT_STRING, $array[1], SORT_NUMERIC, SORT_DESC);
var_dump($array);
/*
array(2)
{
    [0]=> array(5)
    {
        [0]=> string(2) "10"
        [1]=> int(100)
        [2]=> int(100)
        [3]=> int(11)
        [4]=> string(1) "a"
    }
    [1]=> array(5)
    {
        [0]=> int(1)
        [1]=> int(3)
        [2]=> string(1) "2"
        [3]=> int(2)
        [4]=> int(1)
    }
}
*/

// 대소문자를 구분하지 않는 정렬
$array = ['Alpha', 'atomic', 'Beta', 'bank'];
$array_lowercase = array_map('strtolower', $array);	// 배열의 각 원소에 소문자로 변환하는 함수적용
array_multisort($array_lowercase, SORT_ASC, SORT_STRING, $array);
print_r($array);
/*
Array
(
    [0] => Alpha
    [1] => atomic
    [2] => bank
    [3] => Beta
)
*/
728x90
250x250
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Total
Today
Yesterday