ZetCode

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);

标志组合启用了不区分大小写的比较。请注意,原始大小写在排序后的数组中得以保留,只有比较方式发生了改变。

最佳实践

来源

PHP sort 文档

本教程介绍了 PHP sort 函数,并通过实际示例展示了其在各种排序场景下的用法。

作者

我叫 Jan Bodnar,是一名充满激情的程序员,拥有丰富的编程经验。我自 2007 年以来一直在撰写编程文章。迄今为止,我已撰写了 1,400 多篇文章和 8 本电子书。我在教学编程方面拥有超过十年的经验。

列出 所有 PHP 数组函数