PHP 2차원 배열 정렬

巴扎黑
풀어 주다: 2016-11-24 13:43:20
원래의
1333명이 탐색했습니다.

PHP 자체에는 다차원 배열을 정렬하는 기능이 있습니다.

bool array_multisort (array $ar1 [, Mixed $arg [, Mixed $... [, array $... ]]] )

다음은 array_multisort 함수에 대한 설명입니다. 매뉴얼에 :

array_multisort() 를 사용하면 여러 배열을 한 번에 정렬하거나 다차원 배열을 특정 차원 또는 여러 차원에 따라 정렬할 수 있습니다.
연관(문자열) 키 이름은 변경되지 않지만 숫자 키 이름은 다시 색인화됩니다.
입력 배열은 테이블 열로 처리되고 행별로 정렬됩니다. 이는 SQL의 ORDER BY 절 기능과 유사합니다. 첫 번째 배열은 정렬할 기본 배열입니다. 배열의 행(값)이 동일한 것으로 비교되면 다음 입력 배열의 해당 값의 크기에 따라 정렬됩니다.

설명서에서 볼 수 있듯이 PHP 자체의 다차원 정렬은 첫 번째 배열을 정렬하고 다음 순서를 조정하는 것입니다. 다음과 같은 배열:

array( 'id' => array(1,3,2),

'data'=>array('a','c', 'b'))

ID별로 다차원 정렬만 수행하면 끝입니다. 그러나 우리가 구성하는 배열은 다음과 같은 경우가 많습니다:

array(
array('id'=>1,'data'=>'a'),
array( ' id'=>3,'data'=>'c'),
array('id'=>2,'data'=>'b')
);

배열의 요소는 행으로 정렬되며 열 중 하나로 정렬되어야 합니다. PHP는 행렬 전치와 유사한 기능을 제공하지 않는 것 같으므로 다차원 정렬에 array_multisort를 직접 사용할 수 없습니다. 하지만 먼저 정렬된 열을 추출하고 이를 첫 번째 매개변수로 array_multisort에 전달하기만 하면 됩니다.

function multi_array_sort($multi_array,$sort_key,$sort=SORT_ASC){  
    if(is_array($multi_array)){  
        foreach ($multi_array as $row_array){  
            if(is_array($row_array)){  
                $key_array[] = $row_array[$sort_key];  
            }else{  
                return -1;  
            }  
        }  
    }else{  
        return -1;  
    }  
    array_multisort($key_array,$sort,$multi_array);  
    return $multi_array;  
}
로그인 후 복사


관련 라벨:
php
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿