【问题标题】:PHP: Merge 2 columns in all CSV file rowsPHP:合并所有 CSV 文件行中的 2 列
【发布时间】:2020-05-03 15:14:01
【问题描述】:

成功的代码将

  • 打开 csv 文件
  • 合并2个字段的内容
  • 将这些合并值放入另一个现有字段中
  • 创建包含合并字段的新 csv 文件

开始 CSV 文件示例:

产品名称、产品类型、尺寸、类别、子类别

Lite 1/2 桶,啤酒,1/2 桶,比尔森啤酒

Bud Light 1/2 桶,啤酒,1/2 桶,比尔森啤酒

预期结束的 CSV 文件:

产品名称、产品类型、尺寸、类别、子类别

Lite 1/2 桶,啤酒,1/2 桶,啤酒;1/2 桶;pilser,pilsner

Bud Light 1/2 桶,啤酒,1/2 桶,啤酒;1/2 桶;pilser,pilsner

【问题讨论】:

标签: php csv merge field


【解决方案1】:

这是我找到的解决方案。可能不是最优雅的。

<?php
//Brand_Name	Brand_Description	SKUNumber	UPC	product_type	CATEGORY	SUB-CATEGORY	BEER TYPE	BEER STYLE	PRODUCER	price_regular	Size	Web Active	Quantity_Available
$columns = ["Brand_Name","Brand_Description","SKUNumber","UPC","product_type","CATEGORY","SUB-CATEGORY","BEER TYPE","BEER STYLE","PRODUCER","price_regular","Size","Web Active","Quantity_Available"];
//$columns = ["sku","category","description","image","small_image","thumbnail", "price","color"];

$file = fopen("Products_In.csv", "r"); //Open the old file for reading
$newFile = fopen("Products_Out.csv", "w"); //Create a new file for writing

while (($data = fgetcsv($file)) !== FALSE) {
    $row = array_combine($columns, $data);
    if(!empty($row['BEER TYPE'])){
	    $category = "{$row['product_type']};{$row['Size']};{$row['BEER TYPE']}";
    } else {  
	    $category = "{$row['product_type']};{$row['Size']}";
    }
	$row['SUB-CATEGORY'] = $category;
    fputcsv($newFile, array_values($row)); //write data into new file
}

fclose($file);
fclose($newFile);
echo "<h1>Categories updated</h1>";
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-22
    • 2014-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-25
    • 2019-03-14
    相关资源
    最近更新 更多