소행성이야기

php 에서 다차원 배열 정열하기

소행성왕자 2018. 7. 10. 13:05

다차원 배열 정렬하기

1차원 배열은 알파벳 순서라든가 크기 순으로 정렬할 수 있었지만 다차원 배열에서는 배열 자체를 비교해야 하기 때문에 좀 더 복잡해진다.

사용자 정의 정렬 usort()

1
2
3
4
// 2차원 배열
$products = array( array('TIR', 'Tires', 100),
array('OIL', 'Oil', 10),
array('SPK', 'Spark Plugs', 4) );

위의 배열을 어떻게 정렬해야 할까? 여러 가지 방법이 있겠지만 물품의 설명을 알파벳 순서로 정렬한다거나 가격을 기준으로 정렬하는 방법 등을 생각해 볼 수 있다. 어떤 쪽이든 usort() 함수를 사용하기 위해서 우리가 직접 비교 함수를 만들어 주어야 한다. 여기서는 두 번째 데이터(설명)을 기준으로 알파벳 순으로 정렬해 보겠다.

1
2
3
4
5
6
7
8
9
10
11
function compare($x, $y) {
if($x[1] == $y[1])
return 0;
else if($x[1] < $y[1])
return -1;
else
return 1;
}
// 같으면 0, 작으면 -1, 크면 1을 리턴
usort($products, 'compare');
1
2
3
4
5
6
7
8
9
10
11
function reverse_compare($x, $y) {
if($x[1] == $y[1])
return 0;
else if($x[1] < $y[1])
return 1;
else
return -1;
}
// 같으면 0, 작으면 1, 크면 -1을 리턴(역순)
usort($products, 'reverse_compare');