這篇文章給大家分享的內容是關於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 大小寫不敏感的方式排序字串。
$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 ] )
3.rsort
bool rsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
4.asort
bool asort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
5.arsort
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 )