数组排序array_multisort

array_multisort --对多个数组或者多维数组进行排序[参考:secure.php.net]

说明:

bool array_multisort ( array &$array1 [, mixed $array1_sort_order = SORT_ASC [, mixed $array1_sort_flags = SORT_REGULAR [, mixed $... ]]] )

array_multisort() 可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序。

参数
  • array1 要排序的array
  • array1_sort_order 之前array参数要排列的顺序。SORT_ASC按照上升顺序排序,SORT_DESC按照下降顺序排序。此参数可以和array_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。
返回值

成功时返回TRUE,或失败时FALSE

实例:
$nums = array(1,4,5,2,9);
$str = array("a","g","i","z","k");
array_multisort($nums , SORT_DESC , $str);
print_r($nums);
print_r($str);
$arr = array(
    array("spid"=>"1","time"=>100),
    array("spid"=>"1","time"=>105),
    array("spid"=>"2","time"=>104),
    array("spid"=>"1","time"=>102),
    array("spid"=>"2","time"=>101),
);
$spids = array();
$times = array();
foreach ($arr as $key => $value) {
    $spids[] = $value['spid'];
    $times[] = $value['time'];
}
//array_multisort($times,SORT_DESC ,$spids,SORT_ASC , $arr );
//先按照spids列降序,再按照times列升序
array_multisort($spids,SORT_ASC ,$times,SORT_DESC , $arr );
//array_multisort($spids,SORT_DESC , $arr );
print_r($arr);
输出:

9 5 4 2 1
k i g z a
["1":105,"1":102,"1":100,"2":104,"2":101]

原文地址:https://www.cnblogs.com/chq3272991/p/8969059.html