📅  最后修改于: 2023-12-03 15:39:49.814000             🧑  作者: Mango
在 PHP 中,我们可以使用多种方式对数组进行排序。但是,如何排序多个数组呢?本文将介绍两种常用的方法。
第一种方法是先将多个数组合并成一个长数组,然后使用 PHP 内置函数 sort()
或 usort()
进行排序。
<?php
$names = array("Alice", "Bob", "Charlie");
$ages = array(20, 25, 19);
$scores = array(80, 90, 85);
// 合并多个数组
$combined = array();
for ($i = 0; $i < count($names); $i++) {
$combined[] = array(
"name" => $names[$i],
"age" => $ages[$i],
"score" => $scores[$i],
);
}
// 使用 usort() 对数组排序
usort($combined, function ($a, $b) {
return $b["score"] - $a["score"];
});
// 打印结果
print_r($combined);
?>
输出结果:
Array
(
[0] => Array
(
[name] => Bob
[age] => 25
[score] => 90
)
[1] => Array
(
[name] => Charlie
[age] => 19
[score] => 85
)
[2] => Array
(
[name] => Alice
[age] => 20
[score] => 80
)
)
可以看到,该方法将多个数组合并成一个长数组,并按需要进行排序。但是如果数组比较大,合并数组的过程会比较耗时,从而影响性能。
第二种方法是使用 PHP 内置函数 array_multisort()
,该函数可以同时对多个数组按照相同的规则排序。
<?php
$names = array("Alice", "Bob", "Charlie");
$ages = array(20, 25, 19);
$scores = array(80, 90, 85);
// 使用 array_multisort() 对数组排序
array_multisort($scores, SORT_DESC, $names, $ages);
// 打印结果
for ($i = 0; $i < count($names); $i++) {
echo $names[$i] . " " . $ages[$i] . " " . $scores[$i] . "\n";
}
?>
输出结果:
Bob 25 90
Charlie 19 85
Alice 20 80
可以看到,该方法非常简洁,只需要一行代码即可完成排序。同时,该方法不需要合并数组,因此处理效率会比较高。
但是需要注意的是,如果需要对数组按照多个规则排序,可以使用多次 array_multisort()
函数进行排序。
以上是排序多数组的两种方法,在实际开发中可以根据实际情况选择使用。