排序标记
$sort_flags = [
SORT_REGULAR, // 正常比较元素
SORT_NUMERIC, // 元素被作为数字来比较
SORT_STRING, // 元素元被作为字符串来比较
SORT_LOCALE_STRING, // 根据当前的区域(locale)设置来把单元当作字符串比较,可以用setlocale()来改变当前区域。
SORT_NATURAL, // 类似natsort()对每个元素以“自然的顺序”对字符串进行排序。
SORT_FLAG_CASE, // 能够与SORT_STRING或SORT_NATURAL合并(使用|位运算合并),不区分大小写排序字符串。
];
数组值排序
// 对数组$array的值进行从低到高的排序,返回bool值是否执行成功;排序后数组索引重排,关联数组变为索引数组
sort($array, $sort_flag = SORT_REGULAR);
// 对数组$array的值进行从高到低的排序,返回bool值是否执行成功;排序后数组索引重排,关联数组变为索引数组
rsort($array, $sort_flag = SORT_REGULAR);
// 使用自定义方法$value_compare_func对数组$array的值进行排序,返回bool值是否执行成功;排序后数组索引重排,关联数组变为索引数组
// value_compare_func回调的两个参数为数组$array的元素;在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于0的整数
usort($array, $value_compare_func = function ($val1, $val2) {return $val1 <=> $val2;});
// 对数组$array的值进行从低到高的排序,返回bool值是否执行成功;数组键不会变化
asort($array, $sort_flag = SORT_REGULAR);
// 对数组$array的值进行从高到低的排序,返回bool值是否执行成功;数组键不会变化
arsort($array, $sort_flag = SORT_REGULAR);
// 使用自定义方法$value_compare_func对数组$array的值进行排序,返回bool值是否执行成功;数组键不会变化
// value_compare_func回调的两个参数为数组$array的元素;在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于0的整数
uasort($array, $value_compare_func = function ($val1, $val2) {return $val1 <=> $val2;});
// 自然排序,实现了一个和人们通常对字母数字字符串进行排序的方法,对数组$array的值进行排序;数组键不会变化,排序区分大小写
natsort($array);
var_dump($array);
// 自然排序,实现了一个和人们通常对字母数字字符串进行排序的方法,对数组$array的值进行排序;数组键不会变化,排序不区分大小写
natcasesort($array);
var_dump($array);
数组键排序
// 对数组$array的键进行从低到高的排序,返回bool值是否执行成功;
ksort($array, $sort_flag = SORT_REGULAR);
// 对数组$array的键进行从高到低的排序,返回bool值是否执行成功;
krsort($array, $sort_flag = SORT_REGULAR);
// 使用自定义方法$key_compare_func对数组$array的键进行排序,返回bool值是否执行成功
// value_compare_func回调的两个参数为数组$array的元素的键;在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于0的整数
uksort($array, $key_compare_func = function ($val1, $val2) {return $val1 <=> $val2;});
$array1_sort_orders = [
SORT_ASC, // 升序
SORT_DESC, // 降序
];
$array = [
['a' => 1, 'b' => 0, 'e' => 100, 'f' => 0, 'g' => -1],
['a' => 7, 'b' => 7, 'e' => 1, 'f' => 10, 'g' => 11],
['a' => 5, 'b' => 2, 'e' => 100, 'f' => 0, 'g' => -1],
];
// 1、一次对多个数组排序$array1,$array1_sort_order,$sort_flag;三个参数为一组,可以指定多组,每一组单独排序,后面排序的组根据前面已排序组在进行排序
// 2、根据某一维或多维数组$array1对多维数组$array进行排序
// 关联键名会保持不变,但数字键名会被重新索引
// $array1_sort_order和$sort_flag可以省略
array_multisort($array1, $array1_sort_order = SORT_ASC, $sort_flag = SORT_REGULAR, $array);
$array1 = array_column($array, 'a');
$array2 = array_column($array, 'b');
$array3 = array_column($array, 'e');
var_dump(array_multisort($array1, SORT_ASC, $array2, SORT_ASC, $array3, SORT_ASC, $array));
var_dump($array1);
var_dump($array2);
var_dump($array3);
var_dump($array);