PHP 数组排序是 PHP 开发中常见且重要的操作之一。PHP 提供了多种内置函数来对数组进行排序,包括按值排序、按键排序、升序排序、降序排序以及自定义排序等。以下是一个 PHP 数组排序的详细教程:
一、PHP 数组排序的基本函数
1. 按值排序
- sort():对数组进行升序排序。适用于索引数组和关联数组(但关联数组的键会被重新索引)。
- rsort():对数组进行降序排序。与 sort() 类似,但排序顺序相反。
- asort():对数组进行升序排序,并保持索引关系。特别适用于关联数组。
- arsort():对数组进行降序排序,并保持索引关系。
2. 按键排序
- ksort():对数组按照键名进行升序排序。
- krsort():对数组按照键名进行降序排序。
3. 自定义排序
- usort():使用用户自定义的比较函数对数组中的值进行排序。
- uasort():与 usort() 类似,但保持索引关系。
- uksort():使用用户自定义的比较函数对数组中的键进行排序。
二、使用示例
1. sort() 和 rsort() 示例
$numbers = array(4, 2, 8, 6);
sort($numbers);
print_r($numbers); // 输出: Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 )
rsort($numbers);
print_r($numbers); // 输出: Array ( [0] => 8 [1] => 6 [2] => 4 [3] => 2 )
2. asort() 和 arsort() 示例
$age = array("Peter" => "35", "Ben" => "37", "Joe" => "43");
asort($age);
print_r($age); // 输出: Array ( [Peter] => 35 [Ben] => 37 [Joe] => 43 )
arsort($age);
print_r($age); // 输出: Array ( [Joe] => 43 [Ben] => 37 [Peter] => 35 )
3. ksort() 和 krsort() 示例
$age = array("Peter" => "35", "Ben" => "37", "Joe" => "43");
ksort($age);
print_r($age); // 输出: Array ( [Ben] => 37 [Joe] => 43 [Peter] => 35 )
krsort($age);
print_r($age); // 输出: Array ( [Peter] => 35 [Joe] => 43 [Ben] => 37 )
4. usort()、uasort() 和 uksort() 示例
$people = array(
array('name' => 'Tom', 'age' => 20),
array('name' => 'Jerry', 'age' => 18),
array('name' => 'Bob', 'age' => 23),
);
// 按年龄升序排序
function cmp($a, $b) {
return $a['age'] - $b['age'];
}
usort($people, "cmp");
print_r($people);
// 按年龄降序排序,并保留键值关系
uasort($people, function($a, $b) {
return $b['age'] - $a['age'];
});
print_r($people);
// 按姓名首字母升序排序
uksort($people, function($a, $b) {
return strcmp($a, $b);
}); // 注意:这里 uksort 不适用于多维数组按内部字段排序,仅为示例
注意:上面的 uksort() 示例并不适用于多维数组按内部字段排序,因为 uksort() 是按键名排序的。对于多维数组,应该使用 usort() 或 uasort()。
三、注意事项
- 在使用排序函数时,要注意数组的类型(索引数组或关联数组)以及排序的需求(按值排序还是按键排序)。
- 自定义排序函数时,要确保返回
原文链接: PHP数组排序教程
红客社区:客户端下载 - 红客网络编程与渗透技术