array_multisort — 对多个数组或多维数组进行排序。array_multisort() 可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序。关联(string)键名保持不变,但数字键名会被重新索引。注意:如果两个成员完全相同,那么它们在排序数组中的相对顺序是未定义的。
支持版本
(PHP 4, PHP 5, PHP 7, PHP 8)
定义和用法
array_multisort(
array &$array1,
mixed $array1_sort_order = SORT_ASC,
mixed $array1_sort_flags = SORT_REGULAR,
mixed $... = ?
): bool
array_multisort() 可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序。
关联(string)键名保持不变,但数字键名会被重新索引。
注意:如果两个成员完全相同,那么它们在排序数组中的相对顺序是未定义的。
参数解释
参数 | 描述 |
---|---|
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 之后。 提供的数组和之前的数组要有相同数量的元素。 换言之,排序是按字典顺序排列的。 |
函数返回值
成功时返回 true, 或者在失败时返回 false。
更新日志
版本 | 说明 |
---|---|
5.4.0 | array1_sort_flags 增加 SORT_NATURAL 和 SORT_FLAG_CASE 选项。 |
5.3.0 | array1_sort_flags 增加选项 SORT_LOCALE_STRING。 |
演示案例
// 一维数组排序。注意,字符串排序区分大小写
$array_one = array('1','12','2','3','4','5','6','7','8','9','10','11','13','14');
$array_two = array('monday','Monday','Wednesday','wednesday','tuesday','Tuesday','thursday','Thursday','Friday','friday','Saturday','saturday','Sunday','sunday');
$array_three = array('a'=>'1','b'=>'2','c'=>'3','d'=>'4','e'=>'5','f'=>'6','g'=>'7','h'=>'8','i'=>'9','j'=>'10','k'=>'11','l'=>'12','m'=>'13','n'=>'14');
$array_four = array('a'=>'1','b'=>'2','c'=>'3','d'=>'4','e'=>'5','f'=>'6','g'=>'7','h'=>'a','i'=>'b','j'=>'c','k'=>'d','l'=>'e','m'=>'f','n'=>'g');
$array_five = array('a'=>'10','b'=>'20','c'=>'100','d'=>'99','e'=>'110','f'=>'210','g'=>'7','h'=>'a','i'=>'b','j'=>'ca','k'=>'db','l'=>'ec','m'=>'f','n'=>'g');
array_multisort($array_one);
array_multisort($array_two);
array_multisort($array_three);
array_multisort($array_four);
array_multisort($array_five);
var_dump($array_one);
var_dump($array_two);
var_dump($array_three);
var_dump($array_four);
var_dump($array_five);
array_multisort($array_one, SORT_DESC);
var_dump($array_one);
// 当array_multisort中存在多个数组,后面数组的排序不受自定义排序控制。 ·注意,字符串排序区分大小写
$array_one = array('1','2','3','4','5','6','7','8','9','10','11','12','13','14');
$array_two = array('monday','Monday','wednesday','Wednesday','tuesday','Tuesday','thursday','Thursday','friday','Friday','saturday','Saturday','sunday','Sunday');
array_multisort($array_one, SORT_DESC, $array_two, SORT_ASC);
var_dump($array_one);
var_dump($array_two);
// 处理不区分大小写排序
$array_two = array('monday','Monday','wednesday','Wednesday','tuesday','Tuesday','thursday','Thursday','friday','Friday','saturday','Saturday','sunday','Sunday');
$array_lowercase = array_map('strtolower', $array_two);
array_multisort($array_lowercase, SORT_ASC, SORT_STRING, $array_two);
var_dump($array_two);
// 二维数组,指定键排序
$array_six[] = array('day' => 'monday', 'num' => 1);
$array_six[] = array('day' => 'wednesday', 'num' => 2);
$array_six[] = array('day' => 'tuesday', 'num' => 3);
$array_six[] = array('day' => 'thursday', 'num' => 4);
$array_six[] = array('day' => 'friday', 'num' => 5);
$array_six[] = array('day' => 'saturday', 'num' => 6);
$array_six[] = array('day' => 'sunday', 'num' => 7);
foreach ($array_six as $key => $row) {
$day[$key] = $row['day'];
$num[$key] = $row['num'];
}
array_multisort($num, SORT_DESC, $day, SORT_DESC, $array_six);
var_dump($array_six);
返回结果
array(14) {
[0]=>
string(1) "1"
[1]=>
string(1) "2"
[2]=>
string(1) "3"
[3]=>
string(1) "4"
[4]=>
string(1) "5"
[5]=>
string(1) "6"
[6]=>
string(1) "7"
[7]=>
string(1) "8"
[8]=>
string(1) "9"
[9]=>
string(2) "10"
[10]=>
string(2) "11"
[11]=>
string(2) "12"
[12]=>
string(2) "13"
[13]=>
string(2) "14"
}
array(14) {
[0]=>
string(6) "Friday"
[1]=>
string(6) "Monday"
[2]=>
string(8) "Saturday"
[3]=>
string(6) "Sunday"
[4]=>
string(8) "Thursday"
[5]=>
string(7) "Tuesday"
[6]=>
string(9) "Wednesday"
[7]=>
string(6) "friday"
[8]=>
string(6) "monday"
[9]=>
string(8) "saturday"
[10]=>
string(6) "sunday"
[11]=>
string(8) "thursday"
[12]=>
string(7) "tuesday"
[13]=>
string(9) "wednesday"
}
array(14) {
["a"]=>
string(1) "1"
["b"]=>
string(1) "2"
["c"]=>
string(1) "3"
["d"]=>
string(1) "4"
["e"]=>
string(1) "5"
["f"]=>
string(1) "6"
["g"]=>
string(1) "7"
["h"]=>
string(1) "8"
["i"]=>
string(1) "9"
["j"]=>
string(2) "10"
["k"]=>
string(2) "11"
["l"]=>
string(2) "12"
["m"]=>
string(2) "13"
["n"]=>
string(2) "14"
}
array(14) {
["a"]=>
string(1) "1"
["b"]=>
string(1) "2"
["c"]=>
string(1) "3"
["d"]=>
string(1) "4"
["e"]=>
string(1) "5"
["f"]=>
string(1) "6"
["g"]=>
string(1) "7"
["h"]=>
string(1) "a"
["i"]=>
string(1) "b"
["j"]=>
string(1) "c"
["k"]=>
string(1) "d"
["l"]=>
string(1) "e"
["m"]=>
string(1) "f"
["n"]=>
string(1) "g"
}
array(14) {
["g"]=>
string(1) "7"
["a"]=>
string(2) "10"
["b"]=>
string(2) "20"
["d"]=>
string(2) "99"
["c"]=>
string(3) "100"
["e"]=>
string(3) "110"
["f"]=>
string(3) "210"
["h"]=>
string(1) "a"
["i"]=>
string(1) "b"
["j"]=>
string(2) "ca"
["k"]=>
string(2) "db"
["l"]=>
string(2) "ec"
["m"]=>
string(1) "f"
["n"]=>
string(1) "g"
}
array(14) {
[0]=>
string(2) "14"
[1]=>
string(2) "13"
[2]=>
string(2) "12"
[3]=>
string(2) "11"
[4]=>
string(2) "10"
[5]=>
string(1) "9"
[6]=>
string(1) "8"
[7]=>
string(1) "7"
[8]=>
string(1) "6"
[9]=>
string(1) "5"
[10]=>
string(1) "4"
[11]=>
string(1) "3"
[12]=>
string(1) "2"
[13]=>
string(1) "1"
}
array(14) {
[0]=>
string(2) "14"
[1]=>
string(2) "13"
[2]=>
string(2) "12"
[3]=>
string(2) "11"
[4]=>
string(2) "10"
[5]=>
string(1) "9"
[6]=>
string(1) "8"
[7]=>
string(1) "7"
[8]=>
string(1) "6"
[9]=>
string(1) "5"
[10]=>
string(1) "4"
[11]=>
string(1) "3"
[12]=>
string(1) "2"
[13]=>
string(1) "1"
}
array(14) {
[0]=>
string(6) "Sunday"
[1]=>
string(6) "sunday"
[2]=>
string(8) "Saturday"
[3]=>
string(8) "saturday"
[4]=>
string(6) "Friday"
[5]=>
string(6) "friday"
[6]=>
string(8) "Thursday"
[7]=>
string(8) "thursday"
[8]=>
string(7) "Tuesday"
[9]=>
string(7) "tuesday"
[10]=>
string(9) "Wednesday"
[11]=>
string(9) "wednesday"
[12]=>
string(6) "Monday"
[13]=>
string(6) "monday"
}
array(14) {
[0]=>
string(6) "Friday"
[1]=>
string(6) "friday"
[2]=>
string(6) "Monday"
[3]=>
string(6) "monday"
[4]=>
string(8) "Saturday"
[5]=>
string(8) "saturday"
[6]=>
string(6) "Sunday"
[7]=>
string(6) "sunday"
[8]=>
string(8) "Thursday"
[9]=>
string(8) "thursday"
[10]=>
string(7) "Tuesday"
[11]=>
string(7) "tuesday"
[12]=>
string(9) "Wednesday"
[13]=>
string(9) "wednesday"
}
array(7) {
[0]=>
array(2) {
["day"]=>
string(6) "sunday"
["num"]=>
int(7)
}
[1]=>
array(2) {
["day"]=>
string(8) "saturday"
["num"]=>
int(6)
}
[2]=>
array(2) {
["day"]=>
string(6) "friday"
["num"]=>
int(5)
}
[3]=>
array(2) {
["day"]=>
string(8) "thursday"
["num"]=>
int(4)
}
[4]=>
array(2) {
["day"]=>
string(7) "tuesday"
["num"]=>
int(3)
}
[5]=>
array(2) {
["day"]=>
string(9) "wednesday"
["num"]=>
int(2)
}
[6]=>
array(2) {
["day"]=>
string(6) "monday"
["num"]=>
int(1)
}
}
转载注明:
感谢博主,喝杯咖啡~
感谢博主,喝杯咖啡~
还没有人发表评论