php中13個數組排序函數 的介紹

來源:互聯網
上載者:User
這篇文章給大家分享的內容是關於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 )
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.