>  기사  >  백엔드 개발  >  PHP의 2차원 배열 정렬 방법

PHP의 2차원 배열 정렬 방법

巴扎黑
巴扎黑원래의
2016-11-23 13:59:331064검색

/**
* @package     BugFree
* @version     $Id: FunctionsMain.inc.php,v 1.32 2005/09/24 11:38:37 wwccss Exp $
*
*
* 정렬 레벨 2 항목의 2차원 배열은 array_multisort() 함수를 사용합니다.
*
* sysSortArray($Array,"Key1","SORT_ASC","SORT_RETULAR","Key2"……)
* @author                     Chunsheng Wang
* @param  array   $ArrayData   정렬할 배열입니다.
* @param  string  $KeyName1    정렬 기준이 되는 첫 번째 항목입니다.
* @param  string $SortOrder1  정렬 순서("SORT_ASC"|"SORT_DESC")
* @param  문자열  $SortType1   정렬 유형("SORT_REGULAR"|"SORT_NUMERIC"|"SORT_STRING")
* @return 배열                정렬된 배열 .
*/
함수 sysSortArray($ArrayData,$KeyName1,$SortOrder1 = "SORT_ASC",$SortType1 = "SORT_REGULAR")
{
    if(!is_array($ArrayData))
    {
        return $ArrayData;
    }
 
    // 인수 번호를 가져옵니다.
    $ArgCount = func_num_args();

    // 정렬할 키를 가져와서 SortRule 배열에 넣습니다.
    for($I = 1;$I < $ArgCount;$I ++)
    {
        $Arg = func_get_arg ($I);
        if(!eregi("SORT",$Arg))
        {
            $KeyNameList[] = $Arg;
           $SortRule[]    = '$'.$Arg ;
        }
        else
        {
            $SortRule[]    = $Arg;
        }
    }
 
    // 키에 따라 값을 입력하고 배열합니다.
    foreach($ArrayData AS $Key => $Info)
    {
        foreach($KeyNameList AS $KeyName)
        {
           ${$KeyName}[$Key] = $Info[$KeyName];
        }
    }
 
    // 평가 문자열을 생성하고 평가합니다.
    $EvalString = 'array_multisort('.join(",",$ SortRule).',$ArrayData);';
    eval ($EvalString);
    return $ArrayData;
}
 
 
//######## ######### 示例 ###############
$arr = array(
    array(
        '이름'        =>    '학',
        '크기'        =>    '1235',
        '유형'        =>    'jpe',
        '시간'        =>    '1921-11-13',
        '수업'        =>    'dd',
    ),
    array(
        '이름'        =>    '中國功夫',
        '크기'        =>    '153',
        '유형'        => 'jpe',
        '시간'        =>    '2005-11-13',
        '클래스'        =>    'jj',
    ),
    배열(
'이름' => '프로그래밍',
'크기' => '35',
'유형' => 'gif',
'시간' => 13',
'클래스' => 'dd',
),
array(
'이름' > ' 65',
'유형' => 'jpe' ,
'시간' => '1925-02-13',
'클래스' => 'yy',
) ,
array(
'이름' => '중국 쿵푸',
'크기' => '5',
'유형' => '아이콘',
'시간'= & gt;'
' class' = & gt; 'rr',
),
); >
//참고: 숫자로 정렬하면 153이 65보다 작습니다.
$temp = sysSortArray($arr ,"이름","SORT_ASC","유형","SORT_DESC","크기","SORT_ASC","SORT_STRING");

print_r($temp);

?> ;



기타 관련 정렬 기능:

sort(array &$array [, int $sort_flags ] )


이 함수는 대상 배열을 정렬하며, 각 요소는 값이 낮은 것부터 낮은 것 순으로 정렬됩니다. 함수 매개변수는 참조로 전달되며 반환되지 않습니다. 대신, 현재 배열을 정렬하고 결과에 관계없이 어떤 값도 반환하지 않습니다.

참고: 이 함수는 배열의 셀에 새 키를 할당하는 대신 원래 키를 삭제합니다.

$arr = array(9,5,2,6,8,4,3 ,1) sort($arr) print_r($arr); 🎜>

출력: (키-값 연결이 더 이상 유지되지 않는 것을 볼 수 있습니다)

Array ( [ 0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 8 [7 ] => 9 )


$array [, int $sort_flags] )

이 함수는 배열을 정렬하며, 배열의 인덱스는 단위와 연관된 상태로 유지되며 단위의 순서가 중요한 연관 배열을 정렬하는 데에도 사용됩니다. 참조로 전달되며 반환 값이 없습니다.


출력(키 값이 변경되지 않은 것을 볼 수 있음):

Array( [5 ] => 1 [1] => 2 [4] = > 4 [0] => 5 [2] => 6 [3] => 8 )


rsort (배열 &$array [, int $sort_flags] )

이 함수는 배열을 역순(가장 높은 것부터 낮은 것까지)으로 정렬하는 정렬 함수와 유사합니다.


참고: 이 함수는 배열의 셀에 새 키 이름을 할당합니다. 이렇게 하면 키를 재정렬하는 대신 원래 키가 삭제됩니다.

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.

arsort ( array &$array [, int $sort_flags] )

이 함수는 배열을 역순으로 정렬하고 배열의 인덱스는 해당 단위와 연결된 상태로 유지됩니다. 주로 셀의 순서가 중요한 연관 배열을 정렬하는 데 사용됩니다. arsort() 함수는 배열 요소를 역순(내림차순)으로 정렬한다는 점을 제외하면 asort()와 동일합니다.

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.

ksort (array &$array [, int $sort_flags] )

ksort와 sort의 차이점은 값이 아닌 키 이름으로 배열을 정렬하고 키 이름 간의 연관성을 유지한다는 것입니다. 및 데이터. 이 함수는 주로 연관 배열에 사용됩니다. 성공하면 TRUE를, 실패하면 FALSE를 반환합니다.

krsort (array &$array [, int $sort_flags] )
ksort를 참조하세요. 이 함수는 ksort와 동일하지만 ksort 이후의 결과를 역순으로 정렬합니다.

natsort(array &$array)

이 함수는 사람들이 일반적으로 영숫자 문자열을 정렬하고 원래의 키/값 연관을 유지하는 것과 같은 방식으로 정렬 알고리즘을 구현합니다. 이를 "자연 정렬"이라고 합니다. ". 이 알고리즘과 일반적인 컴퓨터 문자열 정렬 알고리즘(sort()에 사용됨)의 차이점은 아래 예에 나와 있습니다.

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.
매우 PHP 매뉴얼의 전형적인 예


예제는 다음을 출력합니다: 표준 정렬

배열( [0] => img1.png [1] => img10.png [2] => img12.png [3] => ; img2.png )

자연순 정렬

배열( [3] => img1.png [2] => img2.png [1] => img10 .png [0 ] => img12.png )

사용자 정의 정렬 함수인 u(user)로 시작하는 배열 정렬 함수도 있습니다. 시간적인 이유로 여기에는 더 이상 쓰지 않겠습니다.


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:PHP 매직 메소드다음 기사:PHP 매직 메소드