이 기사에서는 주로 PHP 2차원 배열 정렬 array_multisort를 소개합니다. 이는 특정 참조 값을 가지고 있습니다. 이제 도움이 필요한 친구들이 참조할 수 있습니다.
2차원 배열 또는 다차원 배열 정렬은 일반적인 문제입니다. . PHP에는 아래에 간략하게 소개된 특별한 다차원 배열 정렬 기능이 있습니다.
array_multisort(array1,sorting order, sorting type,array2,array3..) 是对多个数组或多维数组进行排序的函数。
array1 | 필수입니다. 입력 배열을 지정합니다. |
정렬 순서 | 선택 사항입니다. 정렬 순서를 지정합니다. 가능한 값은 SORT_ASC 및 SORT_DESC입니다. |
정렬 유형 | 선택 사항입니다. 정렬 유형을 지정합니다. 가능한 값은 SORT_REGULAR, SORT_NUMERIC, SORT_STRING입니다. |
array2 | 선택사항. 입력 배열을 지정합니다. |
array3 | 선택사항. 입력 배열을 지정합니다. |
매개변수의 배열은 테이블 열로 처리되고 행별로 정렬됩니다. 이는 SQL의 ORDER BY 절 기능과 유사합니다. 첫 번째 배열은 정렬할 기본 배열입니다. 배열의 행(값)이 동일하다고 비교되면 다음 입력 배열의 해당 값 크기에 따라 정렬됩니다.
첫 번째 매개변수는 배열이고 각 후속 매개변수는 배열이거나 다음 정렬 순서 플래그 중 하나일 수 있습니다(정렬 플래그는 기본 정렬 순서를 변경하는 데 사용됩니다):
SORT_ASC - 기본값, 오름차순으로 정렬. (A-Z)
SORT_DESC - 내림차순으로 정렬합니다. (Z-A)
그런 다음 정렬 유형을 지정할 수 있습니다:
SORT_REGULAR - 기본값. 각 항목을 규칙적인 순서로 배열하세요.
SORT_NUMERIC - 각 항목을 숫자순으로 정렬합니다.
SORT_STRING - 각 항목을 알파벳순으로 정렬
<?php function my_sort($arrays,$sort_key,$sort_order=SORT_ASC,$sort_type=SORT_NUMERIC ){ if(is_array($arrays)){ foreach ($arrays as $array){ if(is_array($array)){ $key_arrays[] = $array[$sort_key]; }else{ return false; } } }else{ return false; } array_multisort($key_arrays,$sort_order,$sort_type,$arrays); return $arrays; } $person = array( array('id'=>1,'name'=>'fj','weight'=>100,'height'=>180), array('id'=>2,'name'=>'tom','weight'=>53,'height'=>150), array('id'=>3,'name'=>'jerry','weight'=>120,'height'=>156), array('id'=>4,'name'=>'bill','weight'=>110,'height'=>190), array('id'=>5,'name'=>'linken','weight'=>80,'height'=>200), array('id'=>6,'name'=>'madana','weight'=>95,'height'=>110), array('id'=>7,'name'=>'jordan','weight'=>70,'height'=>170) ); var_dump($person); $person = my_sort($person,'name',SORT_ASC,SORT_STRING); var_dump($person); $person = my_sort($person,'weight'); var_dump($person); ?>
결과는 다음과 같습니다.
array (size=7) 0 => array (size=4) 'id' => int 1 'name' => string 'fj' (length=2) 'weight' => int 100 'height' => int 180 1 => array (size=4) 'id' => int 2 'name' => string 'tom' (length=3) 'weight' => int 53 'height' => int 150 2 => array (size=4) 'id' => int 3 'name' => string 'jerry' (length=5) 'weight' => int 120 'height' => int 156 3 => array (size=4) 'id' => int 4 'name' => string 'bill' (length=4) 'weight' => int 110 'height' => int 190 4 => array (size=4) 'id' => int 5 'name' => string 'linken' (length=6) 'weight' => int 80 'height' => int 200 5 => array (size=4) 'id' => int 6 'name' => string 'madana' (length=6) 'weight' => int 95 'height' => int 110 6 => array (size=4) 'id' => int 7 'name' => string 'jordan' (length=6) 'weight' => int 70 'height' => int 170 array (size=7) 0 => array (size=4) 'id' => int 4 'name' => string 'bill' (length=4) 'weight' => int 110 'height' => int 190 1 => array (size=4) 'id' => int 1 'name' => string 'fj' (length=2) 'weight' => int 100 'height' => int 180 2 => array (size=4) 'id' => int 3 'name' => string 'jerry' (length=5) 'weight' => int 120 'height' => int 156 3 => array (size=4) 'id' => int 7 'name' => string 'jordan' (length=6) 'weight' => int 70 'height' => int 170 4 => array (size=4) 'id' => int 5 'name' => string 'linken' (length=6) 'weight' => int 80 'height' => int 200 5 => array (size=4) 'id' => int 6 'name' => string 'madana' (length=6) 'weight' => int 95 'height' => int 110 6 => array (size=4) 'id' => int 2 'name' => string 'tom' (length=3) 'weight' => int 53 'height' => int 150 array (size=7) 0 => array (size=4) 'id' => int 2 'name' => string 'tom' (length=3) 'weight' => int 53 'height' => int 150 1 => array (size=4) 'id' => int 7 'name' => string 'jordan' (length=6) 'weight' => int 70 'height' => int 170 2 => array (size=4) 'id' => int 5 'name' => string 'linken' (length=6) 'weight' => int 80 'height' => int 200 3 => array (size=4) 'id' => int 6 'name' => string 'madana' (length=6) 'weight' => int 95 'height' => int 110 4 => array (size=4) 'id' => int 1 'name' => string 'fj' (length=2) 'weight' => int 100 'height' => int 180 5 => array (size=4) 'id' => int 4 'name' => string 'bill' (length=4) 'weight' => int 110 'height' => int 190 6 => array (size=4) 'id' => int 3 'name' => string 'jerry' (length=5) 'weight' => int 120 'height' => int 156
여기서 중요한 점은 먼저 정렬할 키를 1차원 배열로 저장한 다음 array_multisort( ) 함수, 배열은 키에 따라 정렬됩니다. 물론 여기서 정렬을 위해 array_multisort() 함수를 사용할 필요는 없습니다. 그러나 이 효과는 foreach 순회를 통해서만 얻을 수 있습니다. 더 나은 방법으로 그렇게 하겠습니다. 이렇게 하면 불필요한 문제를 줄일 수 있습니다.
Reposted from:https://www.cnblogs.com/tdalcn/p/6420055.html
관련 권장 사항:
PHP는 2차원 배열을 문자열로 자르고 중복된 값을 제거합니다
위 내용은 PHP 2차원 배열 정렬 array_multisort의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!