ZetCode

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 按顺序排列。

不区分大小写的排序

ksortarray_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。在此方法中,原始大小写会丢失。

最佳实践

来源

PHP ksort 文档

本教程介绍了 PHP ksort 函数,并通过实际示例展示了其按键排序数组的用法。

作者

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

列出 所有 PHP 数组函数