按键排序关联数组
本课属于 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 排序函数一样,因此在键的顺序比值的顺序更重要时,它们可以高效地整理数据。
挑战
简单你将收到一个输入:一个以 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);
?>这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: PHP 在线编译器