Menu
CoddyTech

按键排序关联数组

本课属于 Coddy PHP 学习旅程的“逻辑与流程”单元。第 23 课,共 68 课。

按值排序很有用,但有时你需要按键来整理关联数组。PHP 提供了 ksort(),可按键升序排列;也提供了 krsort(),可按键降序排列。这两个函数都会保留重要的键值对应关系。

下面介绍 ksort() 如何按键的字母顺序排列数组:

<?php
$settings = [
    "theme" => "dark",
    "language" => "english", 
    "notifications" => "enabled",
    "auto_save" => "on"
];

ksort($settings);
print_r($settings);
// 输出:Array ( [auto_save] => on [language] => english [notifications] => enabled [theme] => dark )
?>

请注意,键现在按从 A 到 Z 的字母顺序排列,同时每个设置名称仍与对应的值正确配对。当你想以可预测、有条理的方式显示配置选项或菜单项时,这种方式尤其有用。

如果要按字母逆序排列,krsort() 的作用类似,但会按键从 Z 到 A 排序。这两个函数都会直接修改原数组,就像其他 PHP 排序函数一样,因此在键的顺序比值的顺序更重要时,它们可以高效地整理数据。

challenge icon

挑战

简单

你将收到一个输入:一个以 JSON 格式表示的关联数组,其中包含部门名称及其预算分配。读取输入,将 JSON 字符串转换为数组,使用 ksort() 按键升序对部门名称进行字母排序,然后使用 print_r() 输出排序后的数组。

输入格式:一行内容,其中包含一个以部门名称为键、预算金额为值的 JSON 对象(示例:{"Marketing":75000,"IT":120000,"HR":65000,"Finance":95000})

预期输出:按部门名称(键)的字母顺序升序排列的关联数组,使用 print_r() 显示。

亲手试试

<?php
// 读取输入
$input = fgets(STDIN);

// 将 JSON 转换为数组
$departments = (array)json_decode($input, true);

// TODO: 在下方编写代码,按键对数组排序


// 输出结果
print_r($departments);
?>
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: PHP 在线编译器