加入收藏 | 设为首页 | 会员中心 | 我要投稿 平凉站长网 (https://www.0933zz.com.cn/)- 图像处理、语音技术、媒体智能、运维、低代码!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php 多维数组排序 array_multisort函数用法

发布时间:2022-07-25 08:57:09 所属栏目:PHP教程 来源:互联网
导读:array_multisort函数是php自带对二维数据进行排序的函数,下面我们一起来看看多维数组排序 array_multisort函数用法,希望文章能够帮助到各位。 对2维数组或者多维数组排序是常见的问题,在php中我们有个专门的多维数组排序函数,下面简单介绍下: array_mul
  array_multisort函数是php自带对二维数据进行排序的函数,下面我们一起来看看多维数组排序 array_multisort函数用法,希望文章能够帮助到各位。
 
  对2维数组或者多维数组排序是常见的问题,在php中我们有个专门的多维数组排序函数,下面简单介绍下:
 
  array_multisort(array1,sorting order, sorting type,array2,array3..)是对多个数组或多维数组进行排序的函数。
 
  第一个参数是数组,随后的每一个参数可能是数组,也可能是下面的排序顺序标志(排序标志用于更改默认的排列顺序)之一:
 
  SORT_ASC - 默认,按升序排列。(A-Z)
 
  SORT_DESC - 按降序排列。(Z-A)
 
  随后可以指定排序的类型:
 
  SORT_REGULAR - 默认。将每一项按常规顺序排列。
 
  SORT_NUMERIC - 将每一项按数字顺序排列。
 
  SORT_STRING - 将每一项按字母顺序排列
 
  简单的情况,有两个数组:
 
  $arr1 = array(1,9,5);  
  $arr2 = array(6,2,4);  
  array_multisort($arr1,$arr2);  
  print_r($arr1); // 得到的顺序是1,5,9  
  print_r($arr2); // 得到的顺序是6,4,2
  我估计两个数组的值自始至终都是对应着的:1对应6,9对应2,5对应4。
 
  我们再加多一个数组看看会怎样:
 
  $arr1 = array(1,9,5);  
  $arr2 = array(6,2,4);  
  $arr3 = array(3,7,8);  
  array_multisort($arr1,$arr2,$arr3);
  查看结果,1自始至终都对应6对应3,其它项也是如此。这种对应关系就是手册中所谓的“排序时保留原有的键名关联”。
 
  另外也可以把每个数组想像成数据库表的一列。而对应着的1,6,3为一数据行,9,2,7为另一数据行。。。
 
  array_multisort会先按第一个数组(想像成列)排序,如果第一个数组(列)的值相同,则按第二个数组(列)排序。
 
  具体可以用下面的程式来测试:
 
  $arr1 = array(1,9,5,9);  
  $arr2 = array(6,2,4,1);  
  $arr3 = array(3,7,8,0);  
  array_multisort($arr1,$arr2,$arr3);
  可以想像这里$arr3的结果是(3,8,0,7).
 
  例子:
 
  <?php
  //php 多维数组排序 array_multisort 的使用
  $data[] = array('volume' => 67, 'edition' => 2);
  $data[] = array('volume' => 86, 'edition' => 1);
  $data[] = array('volume' => 85, 'edition' => 6);
  $data[] = array('volume' => 98, 'edition' => 2);
  $data[] = array('volume' => 86, 'edition' => 6);
  $data[] = array('volume' => 67, 'edition' => 7);
  // 生成排序字段数组
  foreach ($data as $key => $row) {
      $volume[$key]  = $row['volume'];
      $edition[$key] = $row['edition'];
  } //phpfensi.com
  //根据volume降序,edition升序
  array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
  //排序后的数组
  print_r($data);
  exit;
  ?>
  补充:看看两个实际例子.
 
  1、一次对多个数组进行排序:
 
  $num1 = array(3, 5, 4, 3);
  $num2 = array(27, 50, 44, 78);
  array_multisort($num1, SORT_ASC, $num2, SORT_DESC);
  print_r($num1);
  print_r($num2);
  //result: Array ( [0] => 3 [1] => 3 [2] => 4 [3] => 5 ) Array ( [0] => 78 [1] => 27 [2] => 44 [3] => 50 )
  2、对多维数组,以二位数组为例,进行排序:
 
  $arr = array(
      '0' => array(
          'num1' => 3,
          'num2' => 27  
      ),
       
      '1' => array(
          'num1' => 5,
          'num2' => 50
      ),
       
      '2' => array(
          'num1' => 4,
          'num2' => 44
      ),
       
      '3' => array(
          'num1' => 3,
          'num2' => 78
      )  
  );
  foreach ( $arr as $key => $row ){
      $num1[$key] = $row ['num1'];
      $num2[$key] = $row ['num2'];
  }
  array_multisort($num1, SORT_ASC, $num2, SORT_DESC, $arr);
  print_r($arr);
  //result:Array([0]=>Array([num1]=>3 [num2]=>78) [1]=>Array([num1]=>3 [num2]=>27) [2]=>Array([num1]=>4 [num2]=>44) [3]=>Array([num1]=>5 [num2]=>50))

(编辑:平凉站长网)

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

    热点阅读