PHP ksort 函数
最后修改于 2025 年 3 月 13 日
PHP 的 ksort 函数按键升序排序数组。它会保留键值关联,是关联数组的理想选择。
基本定义
ksort 函数在排序数组时会保留键值之间的关系。它会修改原始数组。
语法:ksort(array &$array, int $flags = SORT_REGULAR): bool。可选的 flags 参数控制排序行为。成功时返回 true。
基本 ksort 示例
这演示了按键升序排序一个简单的关联数组。
basic_ksort.php
<?php
$fruits = [
"d" => "lemon",
"a" => "orange",
"b" => "banana",
"c" => "apple"
];
ksort($fruits);
foreach ($fruits as $key => $val) {
echo "$key = $val\n";
}
输出将按字母顺序显示键:a、b、c、d。原始数组被修改,键值对在排序过程中得到保留。
排序数字键
ksort 可以处理数字键,并按升序排序。
numeric_keys.php
<?php
$numbers = [
10 => "ten",
2 => "two",
5 => "five",
1 => "one"
];
ksort($numbers);
print_r($numbers);
输出将按顺序显示键:1、2、5、10。请注意,数字键是按数值排序的,而不是按字符串排序。
使用排序标志
可选的 flags 参数允许不同的排序行为,例如数字比较或字符串比较。
sorting_flags.php
<?php
$mixedKeys = [
"10" => "ten",
"2" => "two",
"05" => "five",
"1" => "one"
];
ksort($mixedKeys, SORT_STRING);
print_r($mixedKeys);
使用 SORT_STRING 时,键将作为字符串进行比较。输出显示:“05”、“1”、“10”、“2”。没有此标志,它们将按数字排序。
排序多维数组
ksort 可以按外部键对多维数组进行排序。
multi_dimensional.php
<?php
$users = [
"user3" => ["age" => 25, "name" => "Charlie"],
"user1" => ["age" => 30, "name" => "Alice"],
"user2" => ["age" => 22, "name" => "Bob"]
];
ksort($users);
print_r($users);
这会按用户键对外部数组进行排序,同时保留内部数组。输出显示 user1、user2、user3 按顺序排列。
不区分大小写的排序
将 ksort 与 array_change_key_case 结合使用,以实现不区分大小写的键排序。
case_insensitive.php
<?php
$colors = [
"Red" => "#FF0000",
"green" => "#00FF00",
"BLUE" => "#0000FF"
];
$colors = array_change_key_case($colors, CASE_LOWER);
ksort($colors);
print_r($colors);
首先将所有键转换为小写,然后排序。输出显示键按顺序排列:blue、green、red。在此方法中,原始大小写会丢失。
最佳实践
- 保留键: 在维护键值对至关重要时使用。
- 性能: 对于大型数组,比
asort快。 - 标志: 为您的数据类型选择适当的排序标志。
- 复制: 如果必须保留原始顺序,请创建副本。
来源
本教程介绍了 PHP ksort 函数,并通过实际示例展示了其按键排序数组的用法。
作者
列出 所有 PHP 数组函数。