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

如何根据首个相同值合并二维数组的内层数组?

解决方案

要得到你期望的数组结构,核心是以GUID作为外层数组的键,将同GUID下的文件名归类到对应子数组中,替换你原来的第二个循环即可:

$groupedFiles = [];
foreach ($newProcessedFileNames as $row) {
    // 分割路径字符串,分离GUID和文件名
    $parts = explode('\\', $row);
    // 确保格式正确,避免异常数据报错
    if (count($parts) === 2) {
        list($guid, $fileName) = $parts;
        // 如果当前GUID的子数组不存在,先初始化
        if (!isset($groupedFiles[$guid])) {
            $groupedFiles[$guid] = [];
        }
        // 将文件名追加到对应GUID的子数组
        $groupedFiles[$guid][] = $fileName;
    }
}

prettyPrint($groupedFiles);

优化版(一步到位)

如果不需要保留$newProcessedFileNames数组,还可以在第一个循环中直接完成分组,省去额外的循环步骤:

$groupedFiles = [];
foreach ($files as $file) {
    $filename = substr($file, 0, strrpos($file, '.')) . '.jpg';

    // 保留你的其他业务代码

    if (isset($filename)) {
        $parts = explode('\\', $filename);
        if (count($parts) === 2) {
            list($guid, $fileName) = $parts;
            // PHP中如果键不存在,直接赋值会自动初始化子数组,可省略isset判断
            $groupedFiles[$guid][] = $fileName;
        }
    }
}

prettyPrint($groupedFiles);

说明

  • 原来的代码是将每个分割后的[GUID, 文件名]数组直接推入结果,现在改为用GUID作为外层数组的键,把文件名归类到对应键的子数组里,完美匹配你想要的结构。
  • 增加count($parts) === 2的判断是为了兼容格式异常的文件名,避免因数据问题导致报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:02:55