>백엔드 개발 >PHP 튜토리얼 >PHP 배열 정렬 함수 array_multisort() 함수에 대한 자세한 설명

PHP 배열 정렬 함수 array_multisort() 함수에 대한 자세한 설명

不言
不言원래의
2018-04-26 11:34:262433검색

이 글에서는 PHP 배열 정렬 함수 array_multisort() 함수에 대한 자세한 설명을 소개합니다. 특정 참조 값이 있어서 공유합니다. 도움이 필요한 친구들이 참조할 수 있습니다.

array_multisort() 이 함수는 여러 개의 PHP 배열을 정렬할 수 있습니다. 정렬, 그리고 정렬의 결과는 모든 배열이 첫 번째 배열의 순서대로 정렬된다는 것입니다. 실제로는 약간 혼란스럽고, 이렇게만 말하면 이해하지 못할 것입니다. 먼저 예를 들어보겠습니다.

例如array_multisort($a,$b),$a,$b是两个数组,如果排序之后,$a数组的第3个元
素被排到了第一位,那么$b的第三个元素不管他在$b中的大小都会排在第一位。看看下边
的程序运行结果:

$a =array(100,80,50,10,0);
$b = array("c","f","q","e","z");
array_multisort($a,$b);
var_dump($a);
var_dump($b);

运行结果:
array(5) { [0]=> int(0) [1]=> int(10) [2]=> int(50) [3]=> int(80) [4]=> int(100) }
array(5) { [0]=> string(1) “z” [1]=> string(1) “e” [2]=> string(1) “q” [3]=> string(1) “f” [4]=> string(1) “c” }


其实说明白了就是,array_multisort()先把第一个数组按照键值的大小排序,然后其它
数组都按照第一个数组的调整策略进行调整——第三个元素放到第一位,第二个元素放到第
二位……——其实这个多维数组排序算法的最基本体现!
  • 그러나 두 배열의 요소 개수는 동일해야 합니다. 그렇지 않으면 경고 메시지가 나타납니다

먼저 각 요소를 살펴보겠습니다. 다차원 배열 [array ] 정렬 방법은 매우 간단하지만 설명해야 할 몇 가지 매개 변수가 있습니다. SQL에 대해 알고 있다면 한 눈에 이해할 수 있을 것입니다.

//让我们来构造一个多维数组
$a=array(100,2,4,7,7);
$b=array('ab','ac','ad','ag','ap');

$ab = array($a,$b);
//开始排序
array_multisort($ab[0],SORT_NUMERIC,SORT_DESC,$ab[1],SORT_STRING,SORT_ASC);
print_r($ab);

说明一下:首先我们用SORT_NUMERIC来声明对$ab[0]用数字类型排序,用SORT_DESC声
明顺序是逆序(从大到小),然后我们对$ab[1]用字符串类型排序,顺序是升序(顺序)

最后数组$ab的排序结果是两者的结合,先按$ab[0]的逆序,如果$ab[0]中存在大小相同
的数值则按照$ab[1]的顺序排列,输出结果如下:

Array (
    [0] => Array ( [0] => 100 [1] => 7 [2] => 7 [3] => 4 [4] => 2 )
    [1] => Array ( [0] => ab [1] => ag [2] => ap [3] => ad [4] => ac )
)

이제 실제 적용에 더 가까운 예를 살펴보십시오.

$array[] = array("age"=>20,"name"=>"li");
$array[] = array("age"=>21,"name"=>"ai");
$array[] = array("age"=>20,"name"=>"ci");
$array[] = array("age"=>22,"name"=>"di");

foreach ($array as $key=>$value){
     $age[$key] = $value['age'];
     $name[$key] = $value['name'];
}

array_multisort($age,SORT_NUMERIC,SORT_DESC,$name,SORT_STRING,SORT_ASC,$array);
print_r($array);

이 예의 $array[] 배열은 데이터베이스에서 읽은 레코드를 기반으로 구성되었습니다. 이제 가장 큰 것부터 가장 작은 것 순으로 정렬합니다. 나이는 동일하며 이름순으로 정렬되어 있습니다. 이런 종류의 정렬은 앞으로 우리가 자주 사용할 것입니다

array_multisort()에 필요한 정렬 매개변수는 열이어야 하기 때문에 foreach를 사용하여 이 배열의 나이와 이름을 읽어옵니다.

就像上边的例子一样,进行排序,最后一个参数$array想必大家也看见了,是的这里需要
声明对哪个数组进行排序,因为我们前边两个参数在形式上已经和需要排序的PHP数组没有
关系了,虽然其实他们就是$array中的数据——我们从$array中抽取的列——排序当然是需
要列,还没见过用行数据进行排序的呢!

출력 결과는 다음과 같습니다 - 우리가 생각했던 대로입니다:

Array (
    [0] => Array ( [age] => 22 [name] => di )
    [1] => Array ( [age] => 21 [name] => ai )
    [2] => Array ( [age] => 20 [name] => ci )
    [3] => Array ( [age] => 20 [name] => li )
)

보세요, 실제로는 매우 간단합니다. 단지 대문자를 사용해야 하는 몇 가지 매개 변수가 약간 짜증난다는 것뿐입니다! 조금 이해하기 어렵지만, 이해하시면 앞으로 매우 도움이 될 것입니다!

array_multisort(array1,sorting order,sorting type,array2,array3…)

  • 정렬 순서는 선택 사항입니다. 정렬 순서를 지정합니다. 가능한 값:

    SORT_ASC - 기본값. 오름차순(A-Z)으로 정렬합니다.
    SORT_DESC - 내림차순(Z-A)으로 정렬합니다.

  • 정렬 유형은 선택사항입니다. 정렬 유형을 지정합니다. 가능한 값:

    SORT_REGULAR - 기본값. 각 항목을 일반적인 순서로 배치합니다(표준 ASCII, 유형을 변경하지 않음).
    SORT_NUMERIC - 각 항목을 숫자로 처리합니다.
    SORT_STRING - 각 항목을 문자열로 처리합니다.
    SORT_LOCALE_STRING - 현재 로케일을 기반으로 각 항목을 문자열로 처리합니다(setlocale()을 통해 변경 가능).
    SORT_NATURAL - natsort()와 같은 자연 정렬을 사용하여 각 항목을 문자열로 처리합니다.
    SORT_FLAG_CASE - SORT_STRING 또는 SORT_NATURAL과 결합하여(비트 OR) 문자열을 대소문자를 구분하지 않고 정렬할 수 있습니다.

관련 추천:

php array sort usort uksort sort function


위 내용은 PHP 배열 정렬 함수 array_multisort() 함수에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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