PHP sort 数组排序
封面图
•
2025-11-18
•
PHP
196
0
0
0
在 PHP 中,有多种方法可以对数组进行排序。以下是一些常用的数组排序函数及其用法: --- ## 一、基本排序函数 ### 1. `sort()` —— 对数组进行**升序排序** ```php $array = [3, 1, 4, 2]; sort($array); print_r($array); // 输出: Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 ) ``` > 注意:`sort()` 会**修改原数组**。 --- ### 2. `rsort()` —— 对数组进行**降序排序** ```php $array = [3, 1, 4, 2]; rsort($array); print_r($array); // 输出: Array ( [0] => 4 [1] => 3 [2] => 2 [3] => 1 ) ``` --- ### 3. `asort()` —— 按值**升序排序**,保留键名 ```php $array = ['b' => 3, 'a' => 1, 'c' => 2]; asort($array); print_r($array); // 输出: Array ( [a] => 1 [c] => 2 [b] => 3 ) ``` --- ### 4. `arsort()` —— 按值**降序排序**,保留键名 ```php $array = ['b' => 3, 'a' => 1, 'c' => 2]; arsort($array); print_r($array); // 输出: Array ( [b] => 3 [c] => 2 [a] => 1 ) ``` --- ### 5. `ksort()` —— 按键名**升序排序** ```php $array = ['b' => 3, 'a' => 1, 'c' => 2]; ksort($array); print_r($array); // 输出: Array ( [a] => 1 [b] => 3 [c] => 2 ) ``` --- ### 6. `krsort()` —— 按键名**降序排序** ```php $array = ['b' => 3, 'a' => 1, 'c' => 2]; krsort($array); print_r($array); // 输出: Array ( [c] => 2 [b] => 3 [a] => 1 ) ``` --- ## 二、自定义排序(使用回调函数) ### 1. `usort()` —— 自定义排序(按值) ```php $array = [3, 1, 4, 2]; usort($array, function($a, $b) { return $a - $b; // 升序 }); print_r($array); // 输出: Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 ) ``` --- ### 2. `uasort()` —— 自定义排序(保留键名) ```php $array = ['b' => 3, 'a' => 1, 'c' => 2]; uasort($array, function($a, $b) { return $a - $b; }); print_r($array); // 输出: Array ( [a] => 1 [c] => 2 [b] => 3 ) ``` --- ### 3. `uksort()` —— 自定义按键名排序 ```php $array = ['b' => 3, 'a' => 1, 'c' => 2]; uksort($array, function($a, $b) { return strcmp($a, $b); // 按字母顺序排序 }); print_r($array); // 输出: Array ( [a] => 1 [b] => 3 [c] => 2 ) ``` --- ## 三、其他常用函数 - `natsort()`:自然排序(如 `1, 10, 2` → `1, 2, 10`) - `natcasesort()`:不区分大小写的自然排序 - `shuffle()`:随机打乱数组顺序 --- ## 示例总结 | 函数 | 排序方式 | 是否保留键名 | 是否修改原数组 | |------------|------------------|----------------|----------------| | `sort()` | 升序 | 否 | 是 | | `rsort()` | 降序 | 否 | 是 | | `asort()` | 按值升序 | 是 | 是 | | `arsort()` | 按值降序 | 是 | 是 | | `ksort()` | 按键名升序 | 是 | 是 | | `krsort()` | 按键名降序 | 是 | 是 | | `usort()` | 自定义排序 | 否 | 是 | | `uasort()` | 自定义排序(保留键) | 是 | 是 | --- 如果你有具体的排序需求(比如按字符串长度、对象属性等),可以告诉我,我可以帮你写一个具体的例子 😊
上一篇:
array_keys 返回数组中所有的键名
下一篇:
php将二维数组转为一维数组的2种方法
标题录入,一次不能超过6条
留言
评论