区别:
1. sort 用于一维数组排序;
2. usort 用于二维数组;
3. array_multisort 用于多维数组;
具体用法如下:
一、sort 从低到高排序
sort ( array &$array [, int $sort_flags = SORT_REGULAR ] ) : bool
成功时返回 TRUE, 或者在失败时返回 FALSE。
参数
$array 要排序的数组。
$sort_flags 可选的第二个参数 sort_flags 可以用以下值改变排序的行为:
排序类型标记:
SORT_REGULAR- 正常比较单元(不改变类型)SORT_NUMERIC- 单元被作为数字来比较SORT_STRING- 单元被作为字符串来比较SORT_LOCALE_STRING- 根据当前的区域(locale)设置来把单元当作字符串比较,可以用 setlocale() 来改变。SORT_NATURAL- 和 natsort() 类似对每个单元以"自然的顺序"对字符串进行排序。 PHP 5.4.0 中新增的。SORT_FLAG_CASE- 能够与SORT_STRING或SORT_NATURAL合并(OR 位运算),不区分大小写排序字符串。
sort($fruits, SORT_NATURAL|SORT_FLAG_CASE);这种用法说明排序类型标记,是可以累加使用的。
正向排序用sort,逆向排序用rsort。
Note:此函数为 $
array中的元素赋与新的键名,这将删除原有的键名。Warning:在对含有混合类型值的数组排序时要小心,因为 sort() 可能会产生不可预知的结果。
二、usort 自定义数组排序
usort ( array &$array , callable $value_compare_func ) : bool
成功时返回 TRUE, 或者在失败时返回 FALSE。
本函数将用用户自定义的比较函数对一个数组中的值进行排序。 如果要排序的数组需要用一种不寻常的标准进行排序,那么应该使用此函数。
Note:
If two members compare as equal, their relative order in the sorted array is undefined.
此函数为 $
array中的元素赋与新的键名,这将删除原有的键名。
参数
$array 输入的数组
$cmp_function 在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数。
callback ( mixed $a, mixed $b ) : int
Caution:Returning non-integer values from the comparison function, such as float, will result in an internal cast to integer of the callback's return value. So values such as 0.99 and 0.1 will both be cast to an integer value of 0, which will compare such values as equal.
三、array_multisort 多个或多维数组排序
array_multisort ( array &$array1 [, mixed $array1_sort_order = SORT_ASC [, mixed $array1_sort_flags = SORT_REGULAR [, mixed $... ]]] ) : bool
成功时返回 TRUE, 或者在失败时返回 FALSE。
array_multisort() 可以用来一次对多个数组进行排序,或者根据某一维或多维,对多维数组进行排序。
关联(string)键名保持不变,但数字键名会被重新索引。
Note: If two members compare as equal, their relative order in the sorted array is undefined.
参数
$array1 要排序的 array。
$array1_sort_order 之前 array 参数要排列的顺序。 SORT_ASC 按照上升顺序排序, SORT_DESC 按照下降顺序排序。此参数可以和 $array1_sort_flags 互换,也可以完全删除,默认是 SORT_ASC 。
array1_sort_flags
为 array 参数设定选项:
排序类型标志:
SORT_REGULAR- 将项目按照通常方法比较(不修改类型)SORT_NUMERIC- 按照数字大小比较SORT_STRING- 按照字符串比较SORT_LOCALE_STRING- 根据当前的本地化设置,按照字符串比较。 它会使用 locale 信息,可以通过 setlocale() 修改此信息。SORT_NATURAL- 以字符串的"自然排序",类似 natsort()SORT_FLAG_CASE- 可以组合 (按位或 OR)SORT_STRING或者SORT_NATURAL大小写不敏感的方式排序字符串。
参数可以和 array1_sort_order 交换或者省略,默认情况下是 SORT_REGULAR。
...
可选的选项,可提供更多数组,跟随在 sort order 和 sort flag 之后。 提供的数组和之前的数组要有相同数量的元素。 换言之,排序是按字典顺序排列的。
1、一次对多个一维数组进行排序
<?php
$arr = array(
array("10", 11, 100, 100, "a"),
array( 1, 2, "2", 3, 1)
);
array_multisort($arr[0], SORT_ASC, SORT_STRING,
$arr[1], SORT_NUMERIC, SORT_DESC);
var_dump($arr);
?>
2、根据某一维或多维,对多维数组排序
<?php
/* 本例中将把 volume 降序排列,把 edition 升序排列。*/
$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);
// 取得列的列表
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);
?>
本文详细讲解了PHP中的sort(), usort()和array_multisort()函数在一维、二维数组及多维数组排序中的应用,包括自定义排序规则、不同排序标志和多数组排序示例,助您理解并高效使用这些排序工具。
725

被折叠的 条评论
为什么被折叠?



