PHP数组排序教程

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数组排序教程

红客社区:客户端下载 - 红客网络编程与渗透技术

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值