> 백엔드 개발 > PHP 튜토리얼 > PHP에서 다차원 배열을 정렬하는 방법 배우기

PHP에서 다차원 배열을 정렬하는 방법 배우기

WBOY
풀어 주다: 2016-07-25 09:07:29
원래의
1197명이 탐색했습니다.
  1. $a =array(100,80,50,10,0);
  2. $b = array("c", "f","q","e","z");
  3. array_multisort($a,$b);
  4. var_dump($a);
  5. var_dump($b);
  6. ?>
코드 복사

결과 실행: 배열(5) { [0]=> int(0) [1]=> int(10) [2]=> int(50) [3]=> int(80) [4]=> int(100) } 배열(5) { [0]=> 문자열(1) “z” [1]=> 문자열(1) “e” [2]=> 문자열(1) “q” [3]=> 문자열(1) “f” [4]=> 문자열(1) “c” }

분명히 원래 배열 b의 다섯 번째 요소였던 z가 1위를 차지했습니다.

사실 명확히 하기 위해 array_multisort()는 먼저 키 값의 크기에 따라 첫 번째 배열을 정렬한 다음 첫 번째 배열의 조정 전략에 따라 다른 배열을 조정합니다. 세 번째 요소가 먼저 배치됩니다. , 두 번째 요소가 두 번째 위치에 배치됩니다... - 사실 이 다차원 배열 정렬 알고리즘의 가장 기본적인 구현입니다!

그러나 두 배열의 요소 수는 동일해야 합니다. 그렇지 않으면 경고 메시지가 나타납니다. 경고: array_multisort() [function.array-multisort]: ……

에서 배열 크기가 일치하지 않습니다.

좋아, 위의 모든 사람들이 이 기능을 사용할 수 있기를 바랍니다. 중요한 점에 대해 이야기해 보겠습니다. array_multisort()는 나중에 프로젝트를 수행할 때 이 함수가 매우 유용할 것입니다.

먼저 다차원 배열의 각 요소[배열]을 정렬하는 방법을 살펴보겠습니다. 매우 간단하지만 SQL에 대해 조금이라도 알고 있다면 설명해야 할 몇 가지 매개 변수가 있습니다. 아마 한 눈에 이해가 되실 겁니다.

  1. //다차원 배열을 구성해보자
  2. $a=array(100,2,4,7 , 7);
  3. $b=array('ab','ac','ad','ag','ap');
  4. $ab = array($a,$b) ;
  5. //정렬 시작
  6. array_multisort($ab[0],SORT_NUMERIC,SORT_DESC,$ab[1],SORT_STRING,SORT_ASC);
  7. print_r($ab);
  8. ?>
코드 복사

설명: 먼저 SORT_NUMERIC을 사용하여 $ab[0]이 숫자 유형으로 정렬됨을 선언하고 SORT_DESC 선언 순서는 역순(큰 것부터 작은 것 순)이고, $ab[1]을 문자열 형태로 정렬하는데 그 순서는 오름차순(순서)이다. $ab 배열의 최종 정렬 결과는 이 둘을 조합한 것입니다. 먼저 $ab[0]의 역순으로 정렬하면 $ab[0]에 같은 크기의 값이 있으면 정렬됩니다. $ab[1] 순서로 출력 결과는 다음과 같습니다. 배열( [0] => 배열 ( [0] => 100 [1] => 7 [2] => 7 [3] => 4 [4] => 2 ) [1] => 배열( [0] => ab [1] => ag [2] => ap [3] => ad [4] => ac ) ) 데이터베이스에서 order by를 사용하는 것과 매우 유사합니까? 사실, 거의 똑같습니다!

이제 좀 더 실용적인 예를 살펴보겠습니다.

  1. $array[] = array("age"=>20,"name"=>"li") ;
  2. $array[] = array("나이"=>21,"이름"=>"ai");
  3. $array[] = array("나이"=>20,"이름 "=>"ci");
  4. $array[] = array("age"=>22,"name"=>"di");
  5. foreach($array as $ 키=>$value){
  6. $age[$key] = $value['age'];
  7. $name[$key] = $value['name'];
  8. }
  9. array_multisort($age,SORT_NUMERIC,SORT_DESC,$name,SORT_STRING,SORT_ASC,$array);
  10. print_r($array);
  11. ?>
코드 복사

이 예의 $array[] 배열은 데이터베이스에서 읽은 레코드를 기반으로 구성됩니다. 이제 나이가 큰 것부터 작은 것 순으로 정렬됩니다. 이름. 이런 종류의 정렬은 앞으로 자주 사용하게 될 것입니다. array_multisort()에 필요한 정렬 매개변수는 열이어야 하기 때문에 foreach를 사용하여 이 배열의 수명과 이름을 읽습니다. 위의 예와 마찬가지로 정렬을 위해서는 마지막 매개변수 $array를 확인해야 합니다. 예, 처음 두 매개변수는 정렬해야 하는 PHP 배열과 관련이 없기 때문에 정렬할 배열을 선언해야 합니다. 실제로는 $array의 데이터($array에서 추출한 열)이지만 정렬에는 물론 열이 필요하며 정렬에 사용되는 행 데이터를 본 적이 없습니다!

우리가 생각한 대로 출력은 다음과 같습니다. 배열( [0] => 배열 ( [나이] => 22 [이름] => di ) [1] => 배열 ( [나이] => 21 [이름] => ai ) [2] => 배열 ( [나이] => 20 [이름] => ci ) [3] => 배열 ( [나이] => 20 [이름] => li ) )

사실 매우 간단합니다. 단지 대문자를 사용해야 하는 몇 가지 매개변수가 약간 짜증스러울 뿐입니다! 조금 이해하기 어렵지만, 이해해 주시면 앞으로도 큰 도움이 될 것입니다! 충수: 정렬 순서 플래그: SORT_ASC - 오름차순으로 정렬 SORT_DESC – 내림차순으로 정렬

정렬 유형 플래그: SORT_REGULAR – 일반적인 방법으로 항목을 비교합니다. SORT_NUMERIC – 항목을 숫자로 비교합니다. SORT_STRING – 문자열로 항목 비교

각 배열 뒤에는 동일한 유형의 정렬 플래그 두 개를 지정할 수 없습니다. 각 배열 뒤에 지정된 정렬 플래그는 해당 배열에 대해서만 유효합니다. 이전에는 기본값 SORT_ASC 및 SORT_REGULAR이 사용되었습니다. 주목할 만한 또 다른 점: 이 함수는 숫자 인덱스를 변경하고 다른 인덱스는 변경하지 않습니다!

>>> 자세한 내용은 PHP 배열 정렬 방법의 전체 목록을 참조하세요.



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