PHP sort 函数
最后修改于 2025 年 3 月 13 日
PHP sort 函数将数组按升序排序。它会修改原始数组,并在成功时返回 true。
基本定义
sort 函数按值对数组进行升序排序。默认情况下,它会为关联数组维护索引关联。
语法:sort(array &$array, int $flags = SORT_REGULAR): bool。flags 参数修改排序行为。函数返回 true。
基本排序示例
这演示了按升序排序简单的数字数组。
basic_sort.php
<?php $numbers = [3, 1, 4, 1, 5, 9, 2, 6]; sort($numbers); print_r($numbers);
数组按升序排序。请注意,原始数组会被修改,并且数字索引会从 0 开始重新排序。
排序字符串数组
sort 函数使用字母顺序处理字符串数组。
string_sort.php
<?php $fruits = ["banana", "apple", "orange", "pear"]; sort($fruits); print_r($fruits);
字符串按字母顺序排序。排序是区分大小写的,在默认排序中,大写字母排在小写字母之前。
使用标志进行排序
PHP 提供了排序标志来修改排序行为。此示例使用 SORT_NUMERIC 进行正确的数字比较。
sort_flags.php
<?php $mixed = ["10", 2, "100", 5, 1]; sort($mixed, SORT_NUMERIC); print_r($mixed);
使用 SORT_NUMERIC,字符串数字会被正确地作为数值进行比较。如果没有此标志,它们将被作为字符串进行比较。
排序关联数组
使用 sort 对关联数组进行排序会丢失原始键。
associative_sort.php
<?php $ages = ["Peter" => 35, "Ben" => 37, "Joe" => 43]; sort($ages); print_r($ages);
键被数字索引替换。要保留键值关联,请使用 asort 而不是 sort。
不区分大小写的排序
使用 SORT_STRING | SORT_FLAG_CASE 进行不区分大小写的排序。
case_insensitive_sort.php
<?php $names = ["John", "alice", "bob", "Alice"]; sort($names, SORT_STRING | SORT_FLAG_CASE); print_r($names);
标志组合启用了不区分大小写的比较。请注意,原始大小写在排序后的数组中得以保留,只有比较方式发生了改变。
最佳实践
- 保留键: 对关联数组使用
asort。 - 选择标志: 为数据类型选择适当的标志。
- 复制数组: 如果需要原始顺序,请创建副本。
- 大型数组: 对于复杂排序,请考虑
usort。
来源
本教程介绍了 PHP sort 函数,并通过实际示例展示了其在各种排序场景下的用法。
作者
列出 所有 PHP 数组函数。