>  기사  >  백엔드 개발  >  array_multisort 함수를 사용하여 여러 배열 또는 다차원 배열을 정렬하는 방법은 무엇입니까?

array_multisort 함수를 사용하여 여러 배열 또는 다차원 배열을 정렬하는 방법은 무엇입니까?

伊谢尔伦
伊谢尔伦원래의
2017-06-26 11:33:001540검색

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&#39; => 67, ‘edition&#39; => 2); 
$data[] = array(‘volume&#39; => 86, ‘edition&#39; => 1); 
$data[] = array(‘volume&#39; => 85, ‘edition&#39; => 6); 
$data[] = array(‘volume&#39; => 98, ‘edition&#39; => 2); 
$data[] = array(‘volume&#39; => 86, ‘edition&#39; => 6); 
$data[] = array(‘volume&#39; => 67, ‘edition&#39; => 7); 
?>
이 예에서는 볼륨은 내림차순으로, 에디션은 오름차순으로 정렬됩니다. 이제 행이 있는 배열이 생겼지만 array_multisort()에는 열이 있는 배열이 필요하므로 다음 코드를 사용하여 열을 가져온 다음 정렬하세요.

<?php 
// 取得列的列表 
foreach ($data as $key => $row) { 
$volume[$key] = $row[&#39;volume&#39;]; 
$edition[$key] = $row[&#39;edition&#39;]; 
} 
// 将数据根据 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&#39;, ‘atomic&#39;, ‘Beta&#39;, ‘bank&#39;); 
$array_lowercase = array_map(&#39;strtolower&#39;, $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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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