PHP 다차원 배열 정렬 array_multisort 사용 방법

1차원 배열의 경우에는 간단하게 정렬을 할 수 있습니다.

2차원 배열등 다차원 배열의 경우에는 어떻게 하는지 확인을 해보도록 하겠습니다.

$array = array(
	array(
		'id' => 0,
		'track_num' => 7,
		'title' => 'FAKE LOVE',
		'artist' => '방탄소년단(BTS)'
	),
	array(
		'id' => 1,
		'track_num' => 1,
		'title' => 'YES or YES',
		'artist' => '트와이스'
	),
	array(
		'id' => 2,
		'track_num' => 3,
		'title' => '달라달라',
		'artist' => 'ITZY(있지)'
	),
	array(
		'id' => 3,
		'track_num' => 10,
		'title' => '벌써 12시',
		'artist' => '청하'
	),
	array(
		'id' => 4,
		'track_num' => 28,
		'title' => '열애중',
		'artist' => '벤'
	),
	array(
		'id' => 5,
		'track_num' => 14
		'title' => '삐삐',
		'artist' => '아이유(IU)'
	),
	array(
		'id' => 6,
		'track_num' => 30,
		'title' => '가을 타나 봐',
		'artist' => '바이브'
	),
	array(
		'id' => 7,
		'track_num' => 11,
		'title' => '그때 헤어지면 돼',
		'artist' => '로이킴'
	),
	array(
		'id' => 8,
		'track_num' => 31,
		'title' => 'IDOL',
		'artist' => '방탄소년단(BTS)'
	),
);

 

위처럼 다차원 배열로 된 배열이 있다고 가정하겠습니다.

배열에는 가수 이름과 노래 제목, 트랙 순서등이 정의 되어있습니다.

이것을 track_num(트랙 순서)로 정렬 하는 방법을 보겠습니다.

foreach ((array) $array as $key => $value) {
	$sort[$key] = $value['track_num'];
}

array_multisort($sort, SORT_ASC, $array);
print_r($array);

 

정렬 전용 배열인 array_multisort()를 사용하여 한번에 했습니다.

결과는 다음과 같습니다.

Array
(
	[0] => Array
	(
		[id] => 1
		[track_num] => 1
		[title] => YES or YES
		[artist] => 트와이스
	)

	[1] => Array
	(
		[id] => 2
		[track_num] => 3
		[title] => 달라달라
		[artist] => ITZY(있지)
	)

	[2] => Array
	(
		[id] => 0
		[track_num] => 7
		[title] => FAKE LOVE
		[artist] => 방탄소년단(BTS)
	)

	[3] => Array
	(
		[id] => 3
		[track_num] => 10
		[title] => 벌써 12시
		[artist] => 청하
	)

	[4] => Array
	(
		[id] => 7
		[track_num] => 11
		[title] => 그때 헤어지면 돼
		[artist] => 로이킴
	)

	[5] => Array
	(
		[id] => 5
		[track_num] => 14
		[title] => 삐삐
		[artist] => 아이유(IU)
	)

	[6] => Array
	(
		[id] => 4
		[track_num] => 28
		[title] => 열애중
		[artist] => 벤
	)

	[7] => Array
	(
		[id] => 6
		[track_num] => 30
		[title] => 가을 타나 봐
		[artist] => 바이브
	)

	[8] => Array
	(
		[id] => 8
		[track_num] => 31
		[title] => IDOL
		[artist] => 방탄소년단(BTS)
	)

)

 

출력된 결과처럼 track_num로 정렬된것을 볼 수 있습니다.

다차원 배열이라도 array_multisort()를 이용하여 간단하게 할 수 있습니다.

댓글