background image

PHP array_multisort() 函数的深入解析

本文为大家主要介绍了 PHP 中的

array_multisort

()函数,有兴趣的朋友参考下。

一、先看最简单的情况。有两个数组:

$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)。

二、接下来讲解

array_multisort

的参数。这个函数的参数很灵活。最简单的情况是如上面所

示的以 1 个或 n 个数组作为参数,需要注意的是每个数组的项数要一样,否则会 warning
导致排序失效。
像这样

array_multisort

(

$arr1

,

$arr2

,

$arr3

); 默认是所有数组都是升序排列,如果想对

$arr2

序,并当作字符串去比较,就要写成:

array_multisort

(

$arr1

$arr2

, SORT_DESC, SORT_STRING, 

$arr3

);

每个

array

后面可以跟一个排序顺序标志或一个排序类型标志,或者两种标志同时出现。

但是每种排序标志在每个数组后面只能出现一个。
详细如下:
排序顺序标志: