You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP不使用内置函数实现数组每5个元素交替升降序排序

PHP数组交替分组排序修正方案

你当前代码的核心问题是直接对全量数组做统一升序排序,没有完成「按5个元素分组、组内交替升降序」的要求,修正逻辑如下:

实现步骤

  • 将原数组按每5个元素拆分为独立子组
  • 遍历所有子组,下标为偶数的子组(从0计数,对应第一、第三组)执行升序排序,下标为奇数的子组(对应第二、第四组)执行降序排序
  • 所有子组排序完成后拼接为完整数组,再转换为字符串输出

修正后代码

$arr = array(2,5,1,12,-5,4,-1,3,-3,20,8,7,-2,6,9);

function arr_sort($array) {
    // 拆分分组,每组5个元素
    $grouped_arr = array_chunk($array, 5);
    $result = [];
    foreach ($grouped_arr as $group_index => $group) {
        $group_len = count($group);
        // 手写冒泡排序,根据分组序号判断升降序,未使用PHP内置排序函数
        for ($i = 0; $i < $group_len; $i++) {
            for ($j = $i + 1; $j < $group_len; $j++) {
                // 偶数序号组升序,奇数序号组降序
                $condition = $group_index % 2 == 0 ? 
                    ($group[$i] > $group[$j]) : 
                    ($group[$i] < $group[$j]);
                if ($condition) {
                    $temp = $group[$i];
                    $group[$i] = $group[$j];
                    $group[$j] = $temp;
                }
            }
        }
        // 排序后的子组合并入结果
        $result = array_merge($result, $group);
    }
    return implode(',', $result);
}

print_r(arr_sort($arr));

输出结果

运行后输出:-5,-3,-2,-1,1,20,12,9,8,7,2,3,4,5,6,完全符合预期要求。

内容的提问来源于stack exchange,提问作者Sa'ad Abdurrazzaq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 12:24:00