A-A+

PHP数组函数array_multisort的简单使用

2019年10月12日 PHP技术文章 评论 1 条 阅读 0 views 次

今天来聊一下PHP数组函数array_multisort的使用,这个函数在PHP应用中其实使用是比较常见的,因为这个函数多是针对PHP单个数组或者是多维数组的,单维数组在简单的PHP应用中还是比较常见的,如果使用PHP二维数组,多是从MYSQL中查出来的二维数组值排序,不过我们通常可以在SELECT出来数据时,便使用了 ORDER ID 或者 ORDER CREATE 来进行了排序,所以没有特殊应用的情况下,array_multisort 函数在二维数组中是很少使用的,如果二维中需要使用 array_multisort 的话,多数情况是需要和循环一起使用的。

我们先来看一下 array_multisort 的语法,如下:

语法:array_multisort(array1,sorting order,sorting type,array2,array3...)

array1:必需。规定输入的数组。

sorting order:可选。规定排列顺序。可能的值是 SORT_ASC 和 SORT_DESC。

sorting type:可选。规定排序类型。可能的值是SORT_REGULAR、SORT_NUMERIC和SORT_STRING。

array2:可选。规定输入的数组。

array3:可选。规定输入的数组。

array不用说了,数组模式,主要在于 sorting order,有两个选项,我们可以使用 SORT_ASC 和 SORT_DESC。SORT_ASC 默认,按升序排序,SORT_DESC 按降序排序。

sorting type 参数有三种类型,如下:

SORT_REGULAR - 默认。将每一项按常规顺序排列。

SORT_NUMERIC - 将每一项按数字顺序排列。

SORT_STRING - 将每一项按字母顺序排列。

有了参数解释,使用起来就方便多了。

使用了 array_multisort 重新排序后,数字键索引会重新索引,从PHP数组的0值开始递增,我们看下面的一个例子:

  1. <?php  
  2.   
  3.  $arr = '';  
  4.   
  5.  echo '二维数组如下:'.'<br data-filtered="filtered">';  
  6.   
  7.  for($i=0; $i<=5; $i++)  
  8.   
  9.  {  
  10.   
  11.  $arr[$i]['val'] = mt_rand(1, 100);  
  12.   
  13.  $arr[$i]['num'] = mt_rand(1, 100);  
  14.   
  15.  }  
  16.   
  17.  echo '<pre class="brush:php;toolbar:false">';  
  18.   
  19.  print_r($arr);  
  20.   
  21.  echo '</pre>';  
  22.   
  23.  echo '从二维数组中抽出键为val,单独成另一个数组:'.'<br data-filtered="filtered">';  
  24.   
  25.  foreach ($arr as $key => $row)   
  26.   
  27.  {  
  28.   
  29.    $vals[$key] = $row['val'];  
  30.   
  31.     $nums[$key] = $row['num'];  
  32.   
  33.  }  
  34.   
  35.  echo '<pre class="brush:php;toolbar:false">';  
  36.   
  37.  print_r($vals);  
  38.   
  39.  echo '</pre>';  
  40.   
  41.  echo '对其进行排序:'.'<br data-filtered="filtered">';  
  42.   
  43.  array_multisort($vals, SORT_ASC, $arr);  
  44.   
  45.  echo '<pre class="brush:php;toolbar:false">';  
  46.   
  47.  print_r($vals);  
  48.   
  49.  echo '</pre>';  
  50.   
  51. ?>  

首先生成一个二维数组值,运行的结果如下:

  1. Array  
  2.   
  3. (  
  4.   
  5.   [0] => Array  
  6.   
  7.     (  
  8.   
  9.       [val] => 46  
  10.   
  11.       [num] => 49  
  12.   
  13.     )  
  14.   
  15.   [1] => Array  
  16.   
  17.     (  
  18.   
  19.       [val] => 8  
  20.   
  21.       [num] => 24  
  22.   
  23.     )  
  24.   
  25.   [2] => Array  
  26.   
  27.     (  
  28.   
  29.       [val] => 37  
  30.   
  31.       [num] => 3  
  32.   
  33.     )  
  34.   
  35.   [3] => Array  
  36.   
  37.     (  
  38.   
  39.       [val] => 32  
  40.   
  41.       [num] => 35  
  42.   
  43.     )  
  44.   
  45.   [4] => Array  
  46.   
  47.     (  
  48.   
  49.       [val] => 19  
  50.   
  51.       [num] => 38  
  52.   
  53.     )  
  54.   
  55.   [5] => Array  
  56.   
  57.     (  
  58.   
  59.       [val] => 30  
  60.   
  61.       [num] => 37  
  62.   
  63.     )  
  64.   
  65. )  

然后再从中 取出 val 值生成一个新的独立一维数组,使用 array_multisort 进行排序,运行如下:

对其进行排序:

  1. Array  
  2.   
  3. (  
  4.   
  5.   [0] => 8  
  6.   
  7.   [1] => 19  
  8.   
  9.   [2] => 30  
  10.   
  11.   [3] => 32  
  12.   
  13.   [4] => 37  
  14.   
  15.   [5] => 46  
  16.   
  17. )  

使用了 array_multisort 之后,我们就可以得到一个按 val 升序的二维数组,是不是很简单呢,如果一维数组要进行排序,直接使用 array_multisort 就OK了。

标签:

1 条留言  访客:1 条  博主:0 条

  1. 深圳APP开发

    很溜+++++++++++++++++++

给我留言