PHP array_multisort()
函数 的功能是可以同时对多个数组或者多维度数组进行排序。
语法
array_multisort(array1,sorting order,sorting type,array2,array3...)
参数
参数 | 描述 | 必须/可选 |
---|---|---|
array1 | 规定输入的数组1。 | 必须 |
sorting order | 规定排列顺序。可能的值是
| 可选 |
sorting type | 规定排序类型。可能的值是
| 可选 |
array2 | 规定输入的数组2。 | 可选 |
array3 | 规定输入的数组3。 | 可选 |
返回值
如果成功则返回 TRUE,如果失败则返回 FALSE。
注意的点
- 多个数组的元素个数要相同,这是一个前提条件。
- 排序以第一个数组的顺序为基础,其它的数组按照第一个数组的顺序调整,这个有点不好理解,可以看下面的例子1。
- 我们可以使用该函数对数据库查询出来的数据进行再次排序。看例子2。
例子
通过一些例子,了解PHP array_multisort() 函数的用法。
例1
<?php
$arr1 = array(20,10,25,30);
$arr2 = array('d','e','a','f');
array_multisort($arr1, $arr2);
var_dump($arr1);
var_dump($arr2);
?>
输出:我们看到第一个数组排序的顺序是是把20和10换了个位置,那么后面的数组$arr2,也需要按照这个调整。
所以e在d的前面,后面的元素位子不变。
array(4) {
[0]=>
int(10)
[1]=>
int(20)
[2]=>
int(25)
[3]=>
int(30)
}
array(4) {
[0]=>
string(1) "e"
[1]=>
string(1) "d"
[2]=>
string(1) "a"
[3]=>
string(1) "f"
}
[0]=>
int(10)
[1]=>
int(20)
[2]=>
int(25)
[3]=>
int(30)
}
array(4) {
[0]=>
string(1) "e"
[1]=>
string(1) "d"
[2]=>
string(1) "a"
[3]=>
string(1) "f"
}
例2
有时候我们需要在数据库查询出来的数组进行排序。
<?php
$arr = array(
array(
'age' => 17,
'name' => '张三'
),
array(
'age' => 15,
'name' => '李四'
),
array(
'age' => 19,
'name' => '王五'
),
);
$ageArr = array_column($arr,'age');//取age列
//array_multisort($ageArr,$arr);
array_multisort($ageArr,SORT_DESC ,SORT_NUMERIC ,$arr);//使用number进行倒序
print_r($arr);
?>
输出:Array
(
[0] => Array
(
[age] => 19
[name] => 王五
)
[1] => Array
(
[age] => 17
[name] => 张三
)
[2] => Array
(
[age] => 15
[name] => 李四
)
)
(
[0] => Array
(
[age] => 19
[name] => 王五
)
[1] => Array
(
[age] => 17
[name] => 张三
)
[2] => Array
(
[age] => 15
[name] => 李四
)
)