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
后面可以跟一个排序顺序标志或一个排序类型标志,或者两种标志同时出现。
但是每种排序标志在每个数组后面只能出现一个。
详细如下:
排序顺序标志: