2026-06-05 18:19:26
PHP 提供了多种内置函数用于数组排序,以下是详细说明及示例:
一、基础排序函数sort()
按数组元素值升序排序(索引数组)。
示例:$arr = [6, 4, 10, 3, 7];sort($arr);print_r($arr); // 输出:[3, 4, 6, 7, 10]
rsort()
按数组元素值降序排序(索引数组)。
示例:$arr = [6, 4, 10, 3, 7];rsort($arr);print_r($arr); // 输出:[10, 7, 6, 4, 3]
asort()
按关联数组的值升序排序,保留键名。
示例:$arr = ["a" => 10, "b" => 3, "c" => 7];asort($arr);print_r($arr); // 输出:["b" => 3, "c" => 7, "a" => 10]
arsort()
按关联数组的值降序排序,保留键名。
示例:$arr = ["a" => 10, "b" => 3, "c" => 7];arsort($arr);print_r($arr); // 输出:["a" => 10, "c" => 7, "b" => 3]
ksort()
按关联数组的键升序排序,保留值。
示例:$arr = ["b" => 3, "a" => 10, "c" => 7];ksort($arr);print_r($arr); // 输出:["a" => 10, "b" => 3, "c" => 7]
krsort()
按关联数组的键降序排序,保留值。
示例:$arr = ["b" => 3, "a" => 10, "c" => 7];krsort($arr);print_r($arr); // 输出:["c" => 7, "b" => 3, "a" => 10]
当需要复杂排序逻辑时,使用 usort() 配合自定义比较函数:
比较函数规则:
返回 0:元素相等。
返回 1:第一个参数大于第二个。
返回 -1:第一个参数小于第二个。
示例:按字符串长度排序
$arr = ["apple", "banana", "cherry"];function compare_length($a, $b) { return strlen($a) - strlen($b);}usort($arr, "compare_length");print_r($arr); // 输出:["apple", "banana", "cherry"](按长度升序)示例:降序排序
$arr = [6, 4, 10, 3, 7];function compare_desc($a, $b) { return $b - $a; // 降序}usort($arr, "compare_desc");print_r($arr); // 输出:[10, 7, 6, 4, 3]使用 usort() 或 uasort()(保留键名)对多维数组排序:
$users = [ ["name" => "Alice", "age" => 25], ["name" => "Bob", "age" => 20]];function compare_age($a, $b) { return $a["age"] - $b["age"]; // 按年龄升序}usort($users, "compare_age");print_r($users);// 输出:[["name" => "Bob", "age" => 20], ["name" => "Alice", "age" => 25]]注意事项通过灵活选择上述函数,可以满足大多数排序需求。