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

如何筛选含模块及版本的数据行,保留每个唯一模块的最高版本

实现方案

核心逻辑

  • 遍历所有模块条目,以name为临时键缓存条目
  • 用PHP内置的version_compare函数对比版本,保留同名称下的最高版本
  • 最后将缓存的关联数组转成数字索引数组即可

完整代码

// 原始数组
$original = [
    'vendor' => [
        ['name' => 'module-one', 'version' => '1.7.0'],
        ['name' => 'module-one', 'version' => '1.8.0'],
        ['name' => 'module-two', 'version' => '1.8.0'],
        ['name' => 'module-two', 'version' => '1.2.0'],
        ['name' => 'module-three', 'version' => '1.9.0'],
        ['name' => 'module-three', 'version' => '1.8.0'],
    ]
];

// 处理逻辑
$temp = [];
foreach ($original['vendor'] as $item) {
    $name = $item['name'];
    // 同名称下仅保留最高版本
    if (!isset($temp[$name]) || version_compare($item['version'], $temp[$name]['version'], '>')) {
        $temp[$name] = $item;
    }
}

// 重置为数字索引得到最终结果
$result = [
    'vendor' => array_values($temp)
];

// 打印验证结果
print_r($result);

输出验证

运行上述代码后输出结果和需求完全一致:

Array
(
    [vendor] => Array
        (
            [0] => Array
                (
                    [name] => module-one
                    [version] => 1.8.0
                )
            [1] => Array
                (
                    [name] => module-two
                    [version] => 1.8.0
                )
            [2] => Array
                (
                    [name] => module-three
                    [version] => 1.9.0
                )
        )
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:57:03