array_multisort()는 여러 배열을 한 번에 정렬하거나 특정 차원 또는 여러 차원에 따라 다차원 배열을 정렬하는 데 사용할 수 있습니다.
array_multisort — 여러 배열 또는 다차원 배열 정렬
설명
bool array_multisort ( array ar1 [, Mixed arg [, Mixed ... [, array ...]]] )
array_multisort
(PHP 4, PHP 5 )
반환 성공하면 TRUE, 실패하면 FALSE를 반환합니다.
array_multisort()는 여러 배열을 한 번에 정렬하거나 하나 이상의 차원에 따라 다차원 배열을 정렬하는 데 사용할 수 있습니다.
연관(문자열) 키 이름은 변경되지 않고 유지되지만 숫자 키 이름은 다시 색인화됩니다.
입력 배열은 테이블 열로 처리되고 행별로 정렬됩니다. 이는 SQL의 ORDER BY 절 기능과 유사합니다. 첫 번째 배열은 정렬할 기본 배열입니다. 배열의 행(값)이 동일한 것으로 비교되면 다음 입력 배열의 해당 값의 크기에 따라 정렬됩니다.
이 함수의 매개변수 는 다소 특이한 구조를 가지고 있지만 매우 유연합니다. 첫 번째 매개변수는 배열이어야 합니다. 다음 각 매개변수는 아래 나열된 배열 또는 정렬 플래그일 수 있습니다.
정렬 순서 플래그:
SORT_ASC – 오름차순으로 정렬
SORT_DESC – 내림차순으로 정렬
정렬 유형 플래그:
SORT_REGULAR – 일반적인 방법으로 항목 비교
SORT_NUMERIC – 숫자 순서로 항목 비교
SORT _STRING – 문자열에 따라 항목을 비교합니다.
각 배열 뒤에는 동일한 유형의 정렬 플래그 두 개를 지정할 수 없습니다. 각 배열 뒤에 지정된 정렬 플래그는 해당 배열에 대해서만 유효합니다. 이전에는 기본값 SORT_ASC 및 SORT_REGULAR이 사용되었습니다.
예제 1. 여러 개의 arrays 정렬
<?php $ar1 = array(“10″, 100, 100, “a”); $ar2 = array(1, 3, “2″, 1); array_multisort($ar1, $ar2); var_dump($ar1); var_dump($ar2); ?>
이 예에서는 정렬 후 첫 번째 배열에 "10", "a", 100, 100이 포함됩니다. 두 번째 배열에는 1,1,"2",3이 포함됩니다. 두 번째 배열의 항목 순서는 첫 번째 배열의 해당 항목(100 및 100) 순서와 정확히 동일합니다.
array(4) { [0]=> string(2) “10″ [1]=> string(1) “a” [2]=> int(100) [3]=> int(100) } array(4) { [0]=> int(1) [1]=> int(1) [2]=> string(1) “2″ [3]=> int(3) }
예제 2. 다차원 배열 정렬
<?php $ar = array (array (“10″, 100, 100, “a”), array (1, 3, “2″, 1)); array_multisort ($ar[0], SORT_ASC, SORT_STRING, $ar[1], SORT_NUMERIC, SORT_DESC); ?>
이 예에서 정렬한 후 첫 번째 배열에는 10, 100, 100, "a"(문자열 오름차순 정렬)가 포함되고 두 번째 배열에는 다음이 포함됩니다. 1, 3, "2", 1(숫자 내림차순)
예제 3. 다차원 배열 정렬
<?php $ar = array( array(“10″, 11, 100, 100, “a”), array( 1, 2, “2″, 3, 1) ); array_multisort($ar[0], SORT_ASC, SORT_STRING, $ar[1], SORT_NUMERIC, SORT_DESC); var_dump($ar); ?>
이 예에서는 정렬 후 첫 번째 배열이 "10", 100, 100, 11, "a"가 됩니다(오름차순 문자열로 처리). 두 번째 배열에는 1, 3, "2", 2, 1(내림차순 숫자로 처리됨)이 포함됩니다.
array(2) { [0]=> array(5) { [0]=> string(2) “10″ [1]=> int(100) [2]=> int(100) [3]=> int(11) [4]=> string(1) “a” } [1]=> array(5) { [0]=> int(1) [1]=> int(3) [2]=> string(1) “2″ [3]=> int(2) [4]=> int(1) } }
예제 4. 데이터베이스 결과 정렬
이 예에서 데이터 배열의 각 셀은 테이블의 행을 나타냅니다. 이는 데이터베이스에 기록된 일반적인 데이터 모음입니다.
예제의 데이터는 다음과 같습니다.
volume | edition
——-+——–
67 | 2
85 | 6
98 | 모두 데이터 배열에 이름이 지정된 파일에 저장됩니다. 이는 일반적으로
mysql_fetch_assoc
()과 같은 루프를 통해 데이터베이스에서 가져옵니다.
<?php $data[] = array(‘volume' => 67, ‘edition' => 2); $data[] = array(‘volume' => 86, ‘edition' => 1); $data[] = array(‘volume' => 85, ‘edition' => 6); $data[] = array(‘volume' => 98, ‘edition' => 2); $data[] = array(‘volume' => 86, ‘edition' => 6); $data[] = array(‘volume' => 67, ‘edition' => 7); ?>이 예에서는 볼륨은 내림차순으로, 에디션은 오름차순으로 정렬됩니다. 이제 행이 있는 배열이 생겼지만 array_multisort()에는 열이 있는 배열이 필요하므로 다음 코드를 사용하여 열을 가져온 다음 정렬하세요.
<?php // 取得列的列表 foreach ($data as $key => $row) { $volume[$key] = $row['volume']; $edition[$key] = $row['edition']; } // 将数据根据 volume 降序排列,根据 edition 升序排列 // 把 $data 作为最后一个参数,以通用键排序 array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data); ?>
이제 데이터 세트가 정렬되었으며 결과는 다음과 같습니다.
volume | edition
98 | 2
86 | 6
67 |
67 | 7
예제 5. 대소문자를 구분하지 않는 정렬
SORT_STRING 및 SORT_REGULAR는 대소문자를 구분하며 대문자가 소문자보다 먼저 정렬됩니다.
대소문자를 구분하지 않는 정렬을 수행하려면 원본 배열의 소문자 복사본에 따라 정렬하세요.
<?php $array = array(‘Alpha', ‘atomic', ‘Beta', ‘bank'); $array_lowercase = array_map('strtolower', $array); array_multisort($array_lowercase, SORT_ASC, SORT_STRING, $array); print_r($array); ?>
Array ( [0] => Alpha [1] => atomic [2] => bank [3] => Beta )
补充资料:
对于PHP语言中的多维数组排序时最为复杂的一个排序方式。我们在实际编码中将会用到PHP函数array_multisort()来实现这一复杂的排序。例如,首先对一个嵌套数组使用一个普通的关键字进行排序,然后再根据另一个关键字进行排序。这与使用SQL的ORDER BY语句对多个字段进行排序非常相似。
PHP函数asort()利用值排序的具体方式解析
PHP函数arsort()的功能特点详解
PHP自然语言排序的特点介绍
PHP自然语言倒序的具体实现方式
如何运用PHP函数usort()实现自定义排序
Listing J示例为我们具体说明了PHP函数array_multisort()的工作方式:
1, "name" => "Boney M", "rating" => 3), array("id" => 2, "name" => "Take That", "rating" => 1), array("id" => 3, "name" => "The Killers", "rating" => 4), array("id" => 4, "name" => "Lusain", "rating" => 3), ); foreach ($data as $key => $value) { $name[$key] = $value[name]; $rating[$key] = $value[rating]; } array_multisort($rating, $name, $data); print_r($data);?> 这里,我们在$data数组中模拟了一个行和列数组。然后,我使用PHP函数array_multisort()对数据集合进行重排,首先是根据rating进行排序,然后,如果rating相等的话,再根据name排序。它的输出结果如下:
Array ([0] => Array ( [id] => 2 [name] => Take That [rating] => 1 ) [1] => Array ( [id] => 1 [name] => Boney M [rating] => 3 ) [2] => Array ( [id] => 4 [name] => Lusain [rating] => 3 ) [3] => Array ( [id] => 3 [name] => The Killers [rating] => 4 ) )
PHP函数array_multisort()是PHP中最有用的函数之一,它有非常广泛的应用范围。另外,就如你在例子中所看到的,它能对多个不相关的数组进行排序,也可以使用其中的一个元素作为下次排序的基础,还可以对数据库结果集进行排序。
위 내용은 array_multisort 함수를 사용하여 여러 배열 또는 다차원 배열을 정렬하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!