array_multisort()函数详解

参考:https://www.cnblogs.com/WuNaiHuaLuo/p/5794669.html

array_multisort()是数组排序函数,可以对多个PHP数组进行排序,排序结果是所有的数组都按第一个数组的顺序进行排列,多个数组排序的键与第一个排列好的数组对应。先举个例子:
例如array_multisort( a , a, a,b), a , a, a,b是两个数组,如果排序之后, a 数 组 的 第 3 个 元 素 被 排 到 了 第 一 位 , 那 么 a数组的第3个元素被排到了第一位,那么 a3b的第三个元素不管他在$b中的大小都会排在第一位。


其实说明白了就是,array_multisort()先把第一个数组按照键值的大小排序,然后其它数组都按照第一个数组的调整策略进行调整。

不过需要注意的是:两个数组的元素个数必须相同,不然就会出现一个警告信息:
Warning: array_multisort() [function.array-multisort]: Array sizes are inconsistent in ……

array_multisort()对多维数组进行排序,这个功能将来做项目的时候是非常有用的!首先我们看看对多维数组的每一元素[数组]进行排序的操作方法,很简单,但是有几个参数(类似于sql的排序)需要说明一下,代码如下:


说明一下:首先我们用SORT_NUMERIC来声明对$ab[0]用数字类型排序,用SORT_DESC,声明顺序是逆序(从大到小),然后我们对$ab[1]用字符串类型排序,顺序是升序(顺序),最后数组$ab的排序结果是两者的结合,先按$ab[0]的逆序,如果$ab[0]中存在大小相同的数值则按照$ab[1]的顺序排列。

应用场景:
1、对一个多字段的二维数组进行排序

/**
 * 多字段二维数组,根据某字段进行排序
 * @param arr $data 要排序的数组(必填)
 * @param str $field 要排序的字段(必填)
 * @param str $sort 排序规则:SORT_DESC、SORT_ASC(必填)
 * @return arr
 * @author Tom
 * @Time 2019/5/9 23:00
 * */
function array_sort($data, $field, $sort){
  $fields = array_column($data, $field);
  var_dump($fields);die;
  array_multisort($fields, $sort, $data);
  return $data; 
}

你可能感兴趣的:(php)