首頁 >後端開發 >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()鍵值關聯的保持,數字類型的不保持。

  • 下列的所有排序函數都是直接作用於陣列本身, 而不是傳回一個新的有序的陣列。

  • 以下函數對於陣列中相等的元素,它們在排序後的順序是未定義的。 (也即相等元素之間的順序是不穩定的,即具有相同值的元素每次排序的結果都是不確定(關聯數組))。 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

  • 使用使用者自訂的比較函數對陣列中的

    鍵名稱

    進行排序

bool uksort ( array &$array , callable $key_compare_func )
11.natcasesort#### #########不區分大小寫字母的自然排序(排完字母再排數字),保持鍵值關聯#########
bool natcasesort ( array &$array )
###12.natsort#### ########以「自然排序」演算法對陣列排序,保持鍵值關聯##########
bool natsort ( array &$array )
###13.shuffle############本函數打亂(隨機排列單元的順序)一個陣列。鍵值不關聯#########
bool shuffle ( array &$array )
###相關推薦:###

PHP中10種字串常用函數介紹以及使用方法                 

#

以上是php中13個陣列排序函數 的介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn