PHP中有多种排序函数,它们的区别主要在于以下几个方面:
- 排序的顺序是升序还是降序
- 排序的依据是数组的值还是键
- 排序后是否保持原来的键值关系
下面我用一张表格来简要说明这几个函数的区别:
函数名 | 排序顺序 | 排序依据 | 保持键值关系 |
---|---|---|---|
sort() | 升序 | 值 | 否 |
rsort() | 降序 | 值 | 否 |
asort() | 升序 | 值 | 是 |
arsort() | 降序 | 值 | 是 |
ksort() | 升序 | 键 | 是 |
krsort() | 降序 | 键 | 是 |
下面我用一些例子来说明这几个函数的用法和效果:
// 定义一个关联数组
$arr = array("b"=>18, "a"=>20, "c"=>25);
// 使用sort()函数对数组按值升序排序
sort($arr);
print_r($arr); // 输出 Array ( [0] => 18 [1] => 20 [2] => 25 )
// 使用rsort()函数对数组按值降序排序
rsort($arr);
print_r($arr); // 输出 Array ( [0] => 25 [1] => 20 [2] => 18 )
// 使用asort()函数对数组按值升序排序并保持键值关系
asort($arr);
print_r($arr); // 输出 Array ( [b] => 18 [a] => 20 [c] => 25 )
// 使用arsort()函数对数组按值降序排序并保持键值关系
arsort($arr);
print_r($arr); // 输出 Array ( [c] => 25 [a] => 20 [b] => 18 )
// 使用ksort()函数对数组按键升序排序并保持键值关系
ksort($arr);
print_r($arr); // 输出 Array ( [a] => 20 [b] => 18 [c] => 25 )
// 使用krsort()函数对数组按键降序排序并保持键值关系
krsort($arr);
print_r($arr); // 输出 Array ( [c] => 25 [b] => 18 [a] => 20 )