PHP 数组函数

PHP array_multisort()函数 的功能是可以同时对多个数组或者多维度数组进行排序。

语法

array_multisort(array1,sorting order,sorting type,array2,array3...) 

参数

参数描述                                                                    必须/可选
array1规定输入的数组1。必须
sorting order

规定排列顺序。可能的值是

  • SORT_ASC  升序,默认
  • SORT_DESC 降序
可选
sorting type

规定排序类型。可能的值是

  • SORT_REGULAR 默认。正常比较元素。
  • SORT_NUMERIC 将元素作为数值比较
  • SORT_STRING 将元素作为字符串比较。
可选
array2规定输入的数组2。可选
array3规定输入的数组3。可选

返回值

如果成功则返回 TRUE,如果失败则返回 FALSE。

注意的点

  1. 多个数组的元素个数要相同,这是一个前提条件。
  2. 排序以第一个数组的顺序为基础,其它的数组按照第一个数组的顺序调整,这个有点不好理解,可以看下面的例子1。
  3. 我们可以使用该函数对数据库查询出来的数据进行再次排序。看例子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"
}

 例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] => 李四
        )

)