PHP多维数组排序Array_multisort用法详解
发布时间:2023-01-05 12:38:10 所属栏目:PHP教程 来源:
导读: 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 这个灵魂排序,灵魂要与身体一一对应PHP数组排序,所以前后数组元素数要一致】 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可能是无序的,因为只是对第一个数组排序,后边跟着调整顺序而已) 虽然这个方法很基础,但现在终于搞明白了也是很欣慰的 如果有疑问欢迎留言交流~ (编辑:PHP编程网 - 钦州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐


浙公网安备 33038102330484号