PHP数组函数array_multisort的简单使用
今天来聊一下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值开始递增,我们看下面的一个例子:
- <?php
- $arr = '';
- echo '二维数组如下:'.'<br data-filtered="filtered">';
- for($i=0; $i<=5; $i++)
- {
- $arr[$i]['val'] = mt_rand(1, 100);
- $arr[$i]['num'] = mt_rand(1, 100);
- }
- echo '<pre class="brush:php;toolbar:false">';
- print_r($arr);
- echo '</pre>';
- echo '从二维数组中抽出键为val,单独成另一个数组:'.'<br data-filtered="filtered">';
- foreach ($arr as $key => $row)
- {
- $vals[$key] = $row['val'];
- $nums[$key] = $row['num'];
- }
- echo '<pre class="brush:php;toolbar:false">';
- print_r($vals);
- echo '</pre>';
- echo '对其进行排序:'.'<br data-filtered="filtered">';
- array_multisort($vals, SORT_ASC, $arr);
- echo '<pre class="brush:php;toolbar:false">';
- print_r($vals);
- echo '</pre>';
- ?>
首先生成一个二维数组值,运行的结果如下:
- Array
- (
- [0] => Array
- (
- [val] => 46
- [num] => 49
- )
- [1] => Array
- (
- [val] => 8
- [num] => 24
- )
- [2] => Array
- (
- [val] => 37
- [num] => 3
- )
- [3] => Array
- (
- [val] => 32
- [num] => 35
- )
- [4] => Array
- (
- [val] => 19
- [num] => 38
- )
- [5] => Array
- (
- [val] => 30
- [num] => 37
- )
- )
然后再从中 取出 val 值生成一个新的独立一维数组,使用 array_multisort 进行排序,运行如下:
对其进行排序:
- Array
- (
- [0] => 8
- [1] => 19
- [2] => 30
- [3] => 32
- [4] => 37
- [5] => 46
- )
使用了 array_multisort 之后,我们就可以得到一个按 val 升序的二维数组,是不是很简单呢,如果一维数组要进行排序,直接使用 array_multisort 就OK了。
很溜+++++++++++++++++++