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中的大小都会排在第一位。

<?php 
$a =array(100,80,50,10,0);
$b = array("c","f","q","e","z");
array_multisort($a,$b);
var_dump($a);
var_dump($b);
?>

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

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

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

<?php
//让我们来构造一个多维数组
$a=array(100,2,4,7,7);
$b=array('ab','ac','ad','ag','ap');
 
$ab = array($a,$b);
//开始排序
array_multisort($ab[0],SORT_NUMERIC,SORT_DESC,$ab[1],SORT_STRING,SORT_ASC);
print_r($ab);
?>

说明一下:首先我们用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; 
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>