>백엔드 개발 >PHP 튜토리얼 >PHP의 13가지 배열 정렬 함수 소개

PHP의 13가지 배열 정렬 함수 소개

不言
不言원래의
2018-07-23 11:59:041913검색

이 기사에서 공유한 내용은 PHP 배열 정렬 기능에 관한 것입니다. 필요한 참조 가치가 있습니다.

  • 함수 중 u가 있으면 비교 기능을 맞춤 설정할 수 있고, k가 있으면 키별로 정렬할 수 있습니다. >r(reverse ), a(association)가 있는 경우 rsort()를 제외하고 키-값 연관이어야 합니다. usort() sort () shuffle(), a가 없는 다른 항목은 키-값 연관입니다. array_multisort()는 키-값 연결을 유지하며 숫자 유형은 유지되지 않습니다. u的,能自定义比较函数;有k的,按照键来排序;有r(reverse)的,倒序;有a(association)的,一定是键值关联,除了rsort() usort() sort() shuffle(),其他没有a的都是键值关联,array_multisort()键值关联的保持,数字类型的不保持。

  • 下列的所有排序函数都是直接作用于数组本身, 而不是返回一个新的有序的数组。

  • 以下函数对于数组中相等的元素,它们在排序后的顺序是未定义的。 (也即相等元素之间的顺序是不稳定的,即具有相同值的元素每次排序的结果都是不确定(关联数组))。php7asort arsort uasort已实现稳定排序,php5稳定排序:http://php.net/manual/zh/func...

  • 在对含有混合类型值的数组排序时要小心,因为 sort() 可能会产生不可预知的结果。

1.array_multisort

  • 可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序。

bool array_multisort ( array &$array1 [, mixed $array1_sort_order = SORT_ASC [, mixed $array1_sort_flags = SORT_REGULAR [, mixed $... ]]] )

排序类型标志:

  • SORT_REGULAR (默认)- 将项目按照通常方法比较(不修改类型,区分大小写,大写字母会排在小写字母之前)

  • SORT_NUMERIC - 按照数字大小比较

  • SORT_STRING - 按照字符串比较(区分大小写)

  • SORT_LOCALE_STRING - 根据当前的本地化设置,按照字符串比较。 它会使用 locale 信息,可以通过 setlocale() 修改此信息。

  • SORT_NATURAL - 以字符串的"自然排序",类似 natsort()

  • SORT_FLAG_CASE - 可以组合 (按位或 OR) SORT_STRING 或者 SORT_NATURAL 大小写不敏感的方式排序字符串。

  • 1.1 如果有多个数组参数时, $array2会根据$array1的结果排序,像MySQL的group by

  • 1.2 不区分大小写的排序:

$array = array('Alpha', 'atomic', 'Beta', 'bank');
$array_lowercase = array_map('strtolower', $array); // 先复制一个转为小写数组

array_multisort($array_lowercase, SORT_ASC, SORT_STRING, $array);   // 先对小写数组排序,再排序原数组

print_r($array);
  • 1.3 对数据库结果进行排序

function array_orderby()
{
    $args = func_get_args();
    $data = array_shift($args);
    foreach ($args as $n => $field) {
        if (is_string($field)) {
            $tmp = array();
            foreach ($data as $key => $row)
                $tmp[$key] = $row[$field];
            $args[$n] = $tmp;
            }
    }
    $args[] = &$data;
    call_user_func_array('array_multisort', $args);
    return array_pop($args);
}

2.sort

  • 删除原有的键名对数组排序(顺序)

bool sort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
  • sort($fruits, SORT_NATURAL | SORT_FLAG_CASE);排序结果和natcasesort()一样。

3.rsort

  • 对数组逆向排序

bool rsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

4.asort

  • 保持键值关联(association)。主要用于对那些单元顺序很重要的结合数组进行排序。

bool asort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

5.arsort

  • 倒序并保持索引关系(association,reverse)

bool arsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

6.ksort

  • 键名排序

bool ksort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

7.krsort

  • 键名倒序

bool krsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

8.usort

  • 使用用户自定义的比较函数对数组中的进行排序,要排序的数组需要用一种不寻常的标准进行排序,那么应该使用此函数。

bool usort ( array &$array , callable $value_compare_func )
  • $value_compare_func( mixed $a, mixed $b ) $a小于,等于或大于$b时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数。

  • usort($a, array("TestObj", "cmp_obj"))对象属性排序

9.uasort

  • 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联

bool uasort ( array &$array , callable $value_compare_func )

10.uksort

  • 使用用户自定义的比较函数对数组中的键名

다음 정렬 함수는 모두 새로운 정렬된 배열을 반환하는 대신 배열 자체에서 직접 작동합니다.

  • 다음 함수의 경우 배열의 동일한 요소에 대해 정렬 후 순서가 정의되지 않습니다. (즉, 동일한 요소 사이의 순서가 불안정합니다. 즉, 동일한 값을 갖는 요소를 정렬할 때마다 결과가 불확실합니다(연관 배열). php7asort arsort uasort는 안정적인 정렬, php5 안정적인 정렬을 구현했습니다: http://php.net/manual/zh/func...

혼합 유형 값이 포함된 배열을 정렬할 때는 sort()가 예측할 수 없는 결과를 생성할 수 있으므로 주의하세요.

  • 1.array_multisort

은 여러 배열을 한 번에 정렬하거나 특정 차원 또는 여러 차원에 따라 다차원 배열을 정렬하는 데 사용할 수 있습니다.

    bool uksort ( array &$array , callable $key_compare_func )
  • 정렬 유형 플래그:

  • SORT_REGULAR(기본값) - 일반적인 방법으로 항목을 비교합니다(유형을 수정하지 마십시오. 대소문자를 구분하며 대문자는 소문자보다 먼저 정렬됩니다)

    🎜🎜 SORT_NUMERIC - 숫자로 비교 🎜🎜🎜🎜SORT_STRING - 문자열로 비교(대소문자 구분) 🎜🎜🎜🎜SORT_LOCALE_STRING - 현재 현지화 설정에 따라 문자열로 비교합니다. 이는 setlocale()을 통해 수정될 수 있는 로케일 정보를 사용합니다. 🎜🎜🎜🎜SORT_NATURAL - natsort()와 유사한 문자열의 "자연스러운 순서"로 문자열을 정렬합니다. 🎜🎜🎜🎜SORT_FLAG_CASE - 대소문자를 구분하지 않고 SORT_STRING 또는 SORT_NATURAL과 결합(비트 OR)할 수 있습니다. 🎜🎜🎜
    🎜🎜🎜1.1 배열 매개변수가 여러 개인 경우 $array2는 MySQL의 처럼 <code>$array1의 결과에 따라 정렬됩니다. 그룹화 기준🎜🎜🎜🎜1.2 대소문자를 구분하지 않는 정렬: 🎜🎜🎜
    bool natcasesort ( array &$array )
    🎜🎜🎜1.3 데이터베이스 결과 정렬🎜🎜🎜
    bool natsort ( array &$array )
    🎜2.sort🎜🎜🎜🎜원래 키 쌍 배열 삭제 정렬(순서)🎜 🎜🎜
    bool shuffle ( array &$array )
    🎜🎜🎜sort($fruits, SORT_NATURAL | SORT_FLAG_CASE);정렬 결과는 natcasesort()와 같습니다. 🎜🎜🎜🎜3.rsort🎜🎜🎜🎜배열 역정렬🎜🎜🎜rrreee🎜4.asort🎜🎜🎜🎜키-값 연관(association)을 유지하세요. 주로 셀의 순서가 중요한 연관 배열을 정렬하는 데 사용됩니다. ㅋㅋㅋ 🎜 7.krsort🎜🎜🎜🎜 키 이름을 역순으로 누르세요🎜🎜🎜rrreee🎜8.usort🎜🎜🎜🎜사용자 정의 비교 함수를 사용하여 을 수행하세요 배열 정렬, 정렬할 배열을 비정상적인 기준으로 정렬해야 하는 경우 이 함수를 사용해야 합니다. 🎜🎜🎜rrreee🎜🎜🎜$value_compare_func( Mixed $a, Mixed $b ) $a$b , 비교 함수는 그에 따라 0보다 작거나 같거나 큰 정수를 반환해야 합니다. 🎜🎜🎜🎜usort($a, array("TestObj", "cmp_obj"))객체 속성 정렬🎜🎜🎜🎜9.uasort🎜🎜🎜🎜사용자 정의 비교 기능을 사용하여 정렬 배열 배열의 값을 정렬하고 인덱스 연관성을 유지🎜🎜🎜rrreee🎜10.uksort🎜🎜🎜🎜사용자 정의 비교 함수를 사용하여 배열의 키 이름을 정렬🎜🎜 🎜rrreee🎜11.natcasesort🎜🎜🎜🎜대소문자(문자 뒤의 숫자)를 구분하지 않는 자연 정렬, 키-값 연관 유지🎜🎜🎜rrreee🎜12.natsort🎜🎜🎜🎜"자연 정렬" 알고리즘 사용 키를 유지하면서 배열을 정렬하려면 값 연관🎜🎜🎜rrreee🎜13.shuffle🎜🎜🎜🎜이 함수는 배열을 섞습니다(셀 순서를 무작위로 정렬). 키값이 관련이 없습니다🎜🎜🎜rrreee🎜관련 추천:🎜

    PHP에서 일반적으로 사용되는 10가지 문자열 함수 소개 및 사용 방법              

    위 내용은 PHP의 13가지 배열 정렬 함수 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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