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

PHPUnit测试时getSortedModules函数返回嵌套数组而非预期值

解决PHP函数getSortedModules返回结构与单元测试预期不符的问题

你的问题核心在于:getSortedModules函数当前返回的是包含关联数组的数组集合,但单元测试期望的是模块名与分数交替排列的扁平一维数组,两者结构完全不匹配,导致测试失败。

问题根源

当前函数逻辑是把每个模块和分数包装成["module"=>xxx, "marks"=>xxx]的关联数组,排序后直接返回这个数组集合,自然每个元素都是数组。但你的测试用例要求的是把模块名和分数依次平铺成一个一维数组。

修正方案

在排序完成后,新增一步遍历处理:将排序好的关联数组中的module和marks值依次提取出来,组装成扁平数组返回。

修改后的函数代码:

function getSortedModules($modules, $marks)
{
    $module_marks = array();
    for ($i = 0; $i < count($modules); $i++) {
        $module_marks_array = array("module"=>$modules[$i], "marks"=>$marks[$i]);
        array_push($module_marks,$module_marks_array);
    }
    
    usort($module_marks, function($a, $b) {
          return $b['marks'] <=> $a['marks'];
    });
    
    // 将关联数组展开为预期的扁平数组
    $result = [];
    foreach ($module_marks as $item) {
        $result[] = $item['module'];
        $result[] = $item['marks'];
    }
    
    return $result;
}

测试验证

现在运行你的单元测试,函数返回的结构会和预期的["Computer Science",60,"Religion",50, "English",40, "Business",30, "Maths",20]完全一致,测试即可通过。

注意:如果前端原本是适配关联数组结构的,修改函数后要同步确认前端逻辑是否需要调整,避免影响现有功能。

内容的提问来源于stack exchange,提问作者Cbrady

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 02:55:43