PHP多维数组排序Array_multisort用法详解

PHP 的数组方法非常丰富,丰富到用不过来。今天分享下 array_multisort 这个多维数组排序利器,很久之前就知道这个方法,但是苦于解释比较晦涩,一直没懂怎么用,现在终于搞明白了,打算用最通俗易懂的语言分享下~

$aStudents = [
    ['name' => 'zhangsan', 'score' => 80],
    ['name' => 'lisi', 'score' => 70],
    ['name' => 'wangwu', 'score' => 90],
];

$aWanted = [ // 想得到按分数排序的结果
    ['name' => 'lisi', 'score' => 70],
    ['name' => 'zhangsan', 'score' => 80],
    ['name' => 'wangwu', 'score' => 90],
];

这应该是我们经常会用到的一种情况,如果不了解 array_multisort 的话,可以用笨办法,如各种排序来进行排序。

下面举两个例子来说明 array_multisort 的基本用法:

例子1:给二维数组排序

$aStudents = [
    ['name' => 'zhangsan', 'score' => 80],
    ['name' => 'lisi', 'score' => 70],
    ['name' => 'wangwu', 'score' => 90],
];

$aScores = array_column($aStudents, 'score');

array_multisort($aScores, $aStudents); // 得到按 score 排序结果

核心思路是这样的:

1.我们想要按每个学生数组/对象的 score 排序【按 score 这个灵魂排序,灵魂要与身体一一对应,所以前后数组元素数要一致】

2.那就把 score 的数据用 array_column 单独提取出来【把 score 这个灵魂取出来】

3.让 $aStudents 跟着 灵魂 $aScores 一起动,array_multisort($aScore, $aStudents)【分数怎么动,原来的对象就怎么动】

例子2

$aScore = [80, 70, 90];
$aNames = ['zhangsan', 'lisi', 'wangwu'];

array_multisort($aScore, $aNames);

1.相当于建立了 80=>zhangsan,70=>lisi,90=>wangwu 这样的灵魂链接,前边的分数被排序,后边的名字跟着动就好了(结果中names可能是无序的,因为只是对第一个数组排序,后边跟着调整顺序而已)

虽然这个方法很基础,但现在终于搞明白了也是很欣慰的 😝如果有疑问欢迎留言交流~

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值