如何将关联数组薪资升序逻辑封装为sortFunc函数?
实现
sortFunc 函数的完整方案 没问题,我来帮你把这段测试代码封装成符合需求的函数,还能输出格式整齐的表格~
完整函数代码
function sortFunc($salaryArray) { // 先复制原数组,避免排序操作修改传入的原数组 $sortedSalaries = $salaryArray; // 按薪资数值升序排序(保留键名,也就是员工姓名) // 加上SORT_NUMERIC确保按数字大小排序,而不是字符串字典序 asort($sortedSalaries, SORT_NUMERIC); // 输出HTML格式的表格 echo "<table border='1'> <tr> <th>姓名</th> <th>年薪</th> </tr>"; // 遍历排序后的数组,逐行输出内容 foreach ($sortedSalaries as $name => $salary) { echo "<tr> <td>$name</td> <td>$salary</td> </tr>"; } echo "</table>"; }
测试调用示例
// 你的测试数组 $salary = array( "Peter" => "37000", "Ben" => "35000", "Joe" => "43000" ); // 调用函数 sortFunc($salary);
关键细节说明
- 复制数组:用
$sortedSalaries = $salaryArray复制原数组,是因为asort是原地排序,会直接修改传入的数组。如果不复制,原数组的顺序也会被改变,这可能不是你想要的。 - SORT_NUMERIC参数:你的薪资是字符串类型的数字,不加这个参数的话,会按字符串字典序排序(比如"100000"会被排在"20000"前面),加上后会按数字大小正确排序。
- 纯文本表格选项:如果你不需要HTML格式,想要纯文本表格,可以把输出部分改成这样:
// 纯文本表格示例 echo "姓名\t年薪\n"; echo "----------------\n"; foreach ($sortedSalaries as $name => $salary) { echo "$name\t$salary\n"; }
内容的提问来源于stack exchange,提问作者Huey Griffin
相关产品推荐
相关产品推荐

