sort()函数对数组值升序排序并重置为数字索引,忽略原键名;通过 $flags 参数控制比较方式,如 SORT_REGULAR(默认)、SORT_STRING、SORT_NATURAL 等。
PHP 中的 sort() 是一个内置函数,用来对数组的**值(values)按升序重新排列**,并且直接修改原数组——不保留原来的数字键名,而是重置为从 0 开始的连续整数索引。
– 只管值,不管键;
– 升序是默认行为(降序用 rsort());
– 总是返回 true(PHP 8.2+),不是布尔真假判断依据;
– 原数组结构被“重排”,原有键名全部丢弃。
第二个可选参数 $flags 决定 PHP 怎么比较两个值。常见组合有:
SORT_STRING 或 SORT_NATURAL 配合使用,实现不区分大小写| 组合,例如:sort($arr, SORT_NATURAL | SORT_FLAG_CASE)
– 混合类型数组(比如同时有字符串、数字、null)用 SORT_REGULAR 时结果可能出人意料;
– 关联数组如果想保留键值对应关系,别用 sort(),改用 asort();
– PHP 8.0+ 起,相等元素会保持原始顺序(稳定排序),之前版本不保证;
– 排序后内部指针自动回到第一个元素,遍历前不用手动 reset()。
// 原数组$fruits = ['banana', 'Apple', 'cherry', 'apple'];
// 不区分大小写的自然排序sort($fruits, SORT_NATURAL | SORT_FLAG_CASE);
// 结果:['Apple', 'apple', 'banana', 'cherry']
基本上就这些。用对 flag,就能让 sort 处理各种常见排序需求,不复杂但容易忽略细节。