u
的,能自定义比较函数;有k
的,按照键来排序;有r
(reverse)的,倒序;有a(association)
的,必定是键值关联,除了rsort()
usort()
sort()
shuffle()
,其余没有a
的都是键值关联,array_multisort()
键值关联的保持,数字类型的不保持。asort
arsort
uasort
已实现稳定排序,php5稳定排序:http://php.net/manual/zh/func... 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 大小写不敏感的方式排序字符串。
$array2
会根据$array1
的结果排序,像MySQL的group by
$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); }
bool sort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
sort($fruits, SORT_NATURAL | SORT_FLAG_CASE);
排序结果和natcasesort()
同样。bool rsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
bool asort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
bool arsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
键名
排序bool ksort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
键名
倒序bool krsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
值
进行排序,要排序的数组须要用一种不寻常的标准进行排序,那么应该使用此函数。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"))
bool uasort ( array &$array , callable $value_compare_func )
键名
进行排序bool uksort ( array &$array , callable $key_compare_func )
bool natcasesort ( array &$array )
bool natsort ( array &$array )
bool shuffle ( array &$array )