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

PHP数组相同Module键值时筛选Version最高项的实现方法咨询

问题分析

你原有代码存在以下问题:

  • 索引使用错误,$i、$j 两个变量的取值逻辑完全不符合数组结构,会触发取值报错
  • 缺失版本号对比逻辑,仅判断了Module是否重复,没有保留最高版本的处理规则
  • 循环末尾强制覆盖了Module字段的值,之前的判断逻辑完全失效

正确实现

核心逻辑是用Module名称作为临时数组的键,遍历过程中仅保留同Module下版本最高的条目,最终重置数组索引即可得到目标结果:

$modulesFiltered = [];
foreach ($modules as $module) {
    $modName = $module['Module'];
    $modVer = $module['Version'];
    // 未记录过该模块直接存入
    if (!isset($modulesFiltered[$modName])) {
        $modulesFiltered[$modName] = $module;
        continue;
    }
    // 已记录则对比版本,当前版本更高就替换
    if (version_compare($modVer, $modulesFiltered[$modName]['Version']) > 0) {
        $modulesFiltered[$modName] = $module;
    }
}
// 重置为数字索引数组,匹配预期输出格式
$modulesFiltered = array_values($modulesFiltered);

说明

这里使用PHP内置的version_compare函数做版本对比,相比直接字符串比较更严谨,能正确识别1.10 > 1.2这类版本号大小关系。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:36:01