PHP定义了许多函数,可以对多维数组进行排序。
下面介绍几种常用的方法:
- array_multisort()函数
array_multisort()函数可以用来对多维数组进行排序。该函数可以通过将数组的第一个维度作为排序关键字,对不同维度的元素进行排序。
示例代码:
$students =[
['name'=>'Tom', 'age'=>20],
['name'=>'John', 'age'=>18],
['name'=>'Peter', 'age'=>22]
];
//按照年龄升序排序
foreach ($students as $key => $row) {
$age[$key] = $row['age'];
}
array_multisort($age, SORT_ASC, $students);
//输出排序结果
foreach ($students as $key => $row) {
echo $row['name'] . ' ' . $row['age'] . '<br />';
}
- usort()函数
usort()函数可以自定义排序函数,对多维数组进行排序。该函数的参数是一个数组和一个比较函数,通过比较函数对数组进行排序。
示例代码:
$students =[
['name'=>'Tom', 'age'=>20],
['name'=>'John', 'age'=>18],
['name'=>'Peter', 'age'=>22]
];
//按照姓名排序
usort($students, function($a, $b) {
return strcmp($a['name'], $b['name']);
});
//输出排序结果
foreach ($students as $key => $row) {
echo $row['name'] . ' ' . $row['age'] . '<br />';
}
- uasort()函数
uasort()函数也是自定义排序函数,用于对关联数组进行排序。该函数的参数是一个数组和一个比较函数,通过比较函数对数组进行排序。
示例代码:
$students = [
'Tom' => ['age'=>20],
'John' => ['age'=>18],
'Peter' => ['age'=>22]
];
//按照年龄升序排序
uasort($students, function($a, $b) {
return $a['age'] - $b['age'];
});
//输出排序结果
foreach ($students as $name => $row) {
echo $name . ' ' . $row['age'] . '<br />';
}
- ksort()函数
ksort()函数可以对关联数组按照键名进行排序。该函数排序后,键名与键值的关联关系不变。
示例代码:
$students = [
'Tom' => ['age'=>20],
'John' => ['age'=>18],
'Peter' => ['age'=>22]
];
//按照键名排序
ksort($students);
//输出排序结果
foreach ($students as $name => $row) {
echo $name . ' ' . $row['age'] . '<br />';
}
以上就是PHP对多维数组排序的几种方法,可以根据实际需求选择合适的方法。