數組排序函數-php數組函數(一)

數組排序,共13個

  • 函數中有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 $... ]]] )

排序類型標誌:php

  • 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);
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"))對象屬性排序
  • 在類中調用:uasort($array, array($this,"value_compare_func"))

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 )
相關文章
相關標籤/搜索