1. sort()
- 语法:
bool sort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
- 说明:本函数对数组进行排序。当本函数结束时数组单元将被从最低到最高重新安排。
- 注意:不会对键值进行处理,关联数组排序后变索引数组。
2. rsort()
- 语法:
bool rsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
- 说明:本函数对数组进行逆向排序(最高到最低)。
- 注意:同上。
3. asort() 对数组进行排序并保持索引关系
- 语法:
bool asort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
- 说明:本函数对数组进行排序,数组的索引保持和单元的关联。主要用于对那些单元顺序很重要的结合数组进行排序。
- Note: If two members compare as equal, their relative order in the sorted array is undefined.(未找到反例)
4. ksort() 对数组按照键名排序并保持索引关系
- 语法:
bool ksort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
- 说明:对数组按照键名排序,保留键名到数据的关联。本函数主要用于关联数组。
5. arsort() 对数组进行逆向排序并保持索引关系
- 语法:
bool arsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
- 说明:本函数对数组进行排序,数组的索引保持和单元的关联。主要用于对那些单元顺序很重要的结合数组进行排序。
- 注意:同3.
6. krsort() 对数组按照键名逆向排序并保持索引关系
- 语法:
bool krsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
- 说明:对数组按照键名逆向排序,保留键名到数据的关联。主要用于结合数组。
7. usort() 自定义比较函数对数组中的值进行排序
- 语法:
bool usort ( array &$array , callable $value_compare_func )
- 说明:本函数将用用户自定义的比较函数对一个数组中的值进行排序。 如果要排序的数组需要用一种不寻常的标准进行排序,那么应该使用此函数。
- note : 此函数为 array 中的元素赋与新的键名。这将删除原有的键名,而不是仅仅将键名重新排序。
- 参数
cmp_function
说明:int callback ( mixed $a, mixed $b )
,在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数。(小于-小于,该种情况顺序排列)
8. uasort() 自定义比较函数对数组中的值
进行排序并保持索引关联
- 语法:
bool uksort ( array &$array , callable $key_compare_func )
- 其他同上
9. uksort() 自定义比较函数对数组中的键
进行排序并保持索引关联
- 语法:
bool uksort ( array &$array , callable $key_compare_func )
- 其他同上
shuffle() 打乱数组
- 语法:
bool shuffle ( array &$array )
array_multisort() 对多个数组或多维数组进行排序
- 语法:
bool array_multisort ( array &$array1 [, mixed $array1_sort_order = SORT_ASC [, mixed $array1_sort_flags = SORT_REGULAR [, mixed $... ]]] )
- 说明:可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序。
- 例1: (根据数组一的升序排序对数组二进行排序)
输出:$ar1 = array(10, 100, 100, 0); $ar2 = array(1, 3, 2, 4); array_multisort($ar1, $ar2); var_dump($ar1); var_dump($ar2);
array(4) { [0]=> int(0) [1]=> int(10) [2]=> int(100) [3]=> int(100) } array(4) { [0]=> int(4) [1]=> int(1) [2]=> int(2) [3]=> int(3) }
- 例2:排序多维数组
本例中在排序后,第一个数组将变成 “10”,100,100,11,“a”(被当作字符串以升序排列)。第二个数组将包含 1, 3, “2”, 2, 1(被当作数字以降序排列)。<?php $ar = array( array("10", 11, 100, 100, "a"), array( 1, 2, "2", 3, 1) ); array_multisort($ar[0], SORT_ASC, SORT_STRING, $ar[1], SORT_NUMERIC, SORT_DESC); var_dump($ar);
输出:array(2) { [0]=> array(5) { [0]=> string(2) "10" [1]=> int(100) [2]=> int(100) [3]=> int(11) [4]=> string(1) "a" } [1]=> array(5) { [0]=> int(1) [1]=> int(3) [2]=> string(1) "2" [3]=> int(2) [4]=> int(1) } }
- 例3:对数据库结果进行排序
$data[] = array('volume' => 67, 'edition' => 2); $data[] = array('volume' => 86, 'edition' => 1); $data[] = array('volume' => 85, 'edition' => 6); $data[] = array('volume' => 98, 'edition' => 2); $data[] = array('volume' => 86, 'edition' => 6); $data[] = array('volume' => 67, 'edition' => 7); //将把 volume 降序排列,把 edition 升序排列。 // 取得列的列表 foreach ($data as $key => $row) { $volume[$key] = $row['volume']; $edition[$key] = $row['edition']; } // 将数据根据 volume 降序排列,根据 edition 升序排列 // 把 $data 作为最后一个参数,以通用键排序 array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);