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

PHP实现CSV按列分组并合并同组其他列值的方法问询

解决CSV同商品多记录合并问题

核心思路是通过唯一标识分组(ArtNo+Name),将同商品的不同属性值收集后合并为逗号分隔的字符串,具体实现步骤如下:

1. 读取CSV并初始化合并容器

先把CSV内容读取为关联数组(方便按字段名操作),同时创建一个空数组用于存放合并后的商品数据,用ArtNo|Name作为唯一键确保同商品归为一组。

// 读取CSV文件
$csvFile = 'your_products.csv';
$handle = fopen($csvFile, 'r');
if (!$handle) {
    die('无法打开CSV文件');
}

// 获取表头,转成关联数组
$headers = fgetcsv($handle);
$rawData = [];
while (($row = fgetcsv($handle)) !== false) {
    $rawData[] = array_combine($headers, $row);
}
fclose($handle);

// 初始化合并数组
$mergedProducts = [];

2. 遍历原始数据,分组合并属性

遍历每条原始记录,根据唯一键判断商品是否已存在:

  • 首次出现:直接存入合并数组,将需要合并的字段(Color、Size)初始化为数组
  • 重复出现:将对应属性值追加到已有记录的数组中
foreach ($rawData as $item) {
    // 生成唯一分组键(可根据实际情况调整,比如ArtNo唯一的话只用ArtNo)
    $groupKey = $item['ArtNo'] . '|' . $item['Name'];

    if (!isset($mergedProducts[$groupKey])) {
        // 初始化新商品记录
        $mergedProducts[$groupKey] = [
            'ArtNo' => $item['ArtNo'],
            'Name' => $item['Name'],
            'Color' => [$item['Color']],
            'Size' => [$item['Size']],
            // 复制其他不需要合并的字段
            'Price' => $item['Price'],
            'Stock' => $item['Stock']
        ];
    } else {
        // 追加属性值到数组
        $mergedProducts[$groupKey]['Color'][] = $item['Color'];
        $mergedProducts[$groupKey]['Size'][] = $item['Size'];
        // 其他需要合并的字段同理追加
    }
}

3. 转换合并后的属性为逗号分隔字符串

遍历合并数组,将存放在数组中的属性值去重(可选)后,用逗号拼接成字符串。

// 处理属性数组为逗号分隔字符串
foreach ($mergedProducts as &$product) {
    // 去重+拼接,不需要去重可去掉array_unique
    $product['Color'] = implode(', ', array_unique($product['Color']));
    $product['Size'] = implode(', ', array_unique($product['Size']));
}
unset($product); // 释放引用

4. 替换原有逻辑使用合并后的数据

现在$mergedProducts就是合并后的商品数组,直接替换原有脚本中生成HTML表格的数据源即可,后续生成PDF的流程无需修改。

关键点说明

  • 唯一键的生成:如果ArtNo本身是全局唯一的,可以简化为$groupKey = $item['ArtNo'],无需拼接Name
  • 去重处理:array_unique用于避免CSV中同商品同属性的重复记录,若确定无重复可省略
  • 扩展支持:如果还有其他需要合并的字段(如Material),只需在初始化和追加步骤中添加对应字段即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 23:10:27