다차원 배열 정렬하기
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' ); |
'소행성이야기' 카테고리의 다른 글
엘라스틱 서치 클러스터 상태 확인 (0) | 2018.07.10 |
---|---|
javascript 익명함수 (0) | 2018.07.10 |
객체지향의 사실과 오해 를 읽고 (0) | 2018.07.09 |
[part 4] PHP로 좋은 객체 지향(OOP) 습관을 가집시다. 부제: 가장 약한 링크를 받아 들이자(느슨한 결합) (0) | 2018.07.09 |
엘라스틱 서치 + 키바나 설치 및 설정 (0) | 2018.07.09 |