加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 钦州站长网 (https://www.0777zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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编程网 - 钦州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!