PHP-解析一个csv文件并将输出写入另一个csv文件

PHP-解析一个csv文件并将输出写入另一个csv文件,php,magento,csv,Php,Magento,Csv,我正在处理Magento产品的csv文件,我有一个包含3列的csv文件,如 <pre>Name, description, Color</pre> <pre>t-shirt, tshirt description, "green, blue, yellow"</pre> 名称、描述、颜色 t恤,t恤描述,“绿色,蓝色,黄色” 现在,根据第3列(颜色)的值,我想在一个单独的文件中输出每一行,比如“new_products.csv”,这样生成的文件

我正在处理Magento产品的csv文件,我有一个包含3列的csv文件,如

<pre>Name, description, Color</pre>
<pre>t-shirt, tshirt description, "green, blue, yellow"</pre>
名称、描述、颜色
t恤,t恤描述,“绿色,蓝色,黄色”
现在,根据第3列(颜色)的值,我想在一个单独的文件中输出每一行,比如“new_products.csv”,这样生成的文件如下

$row = 1;

if (($handle = fopen("test.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    $num = count($data);
    $name = $data[0];
    $desc = $data[1];


    for ($c=0; $c < $num; $c++) {            

        if($c == 2){ //if we are at color field
          $fp = fopen('file.csv', 'a'); //Open for writing only; place the file pointer at the end of the file.
            $color = explode(',', $data[$c]);
            $color_count = count($color);
            for($i=0; $i<$color_count; $i++){
                fputcsv($fp, array($name,$desc,$color[$i]));
            }
            fclose($fp);
        }

    }

            $row++;
}
fclose($handle);
名称、描述、颜色

t恤,t恤说明,绿色 t恤,t恤描述,蓝色 t恤,t恤说明,黄色 我从这个代码开始

$row=1;
if($handle=fopen(“product.csv”、“r”)!==FALSE){
while(($data=fgetcsv($handle,1000,“,”)!==FALSE){
$num=计数($data);
$name=$data[0];
$desc=$data[1];
对于($c=0;$c<$num;$c++){
$fp=fopen('new_products.csv','w');
如果($c==2){//如果我们在颜色字段
$color=分解(“,”,$data[$c]);
$color\u count=计数($color);

对于($i=0;$i我终于能够自己找到解决方案了。实际上,需要在文件末尾设置文件指针

$row=1;
if($handle=fopen(“test.csv”、“r”)!==FALSE){
while(($data=fgetcsv($handle,1000,“,”)!==FALSE){
$num=计数($data);
$name=$data[0];
$desc=$data[1];
对于($c=0;$c<$num;$c++){
如果($c==2){//如果我们在颜色字段
$fp=fopen('file.csv','a');//仅用于写入;将文件指针放在文件末尾。
$color=分解(“,”,$data[$c]);
$color\u count=计数($color);

对于($i=0;$i)您尝试过什么?另外,您可能想检查和。这不是一个新问题-有几个答案。我不会因为您是新手(代表性方面)而投反对票,但我建议您进行一些搜索。
$row = 1;

if (($handle = fopen("product.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    $num = count($data);
            $name = $data[0];
    $desc = $data[1];

    for ($c=0; $c < $num; $c++) {


        $fp = fopen('new_products.csv', 'w');

        if($c == 2){ //if we are at color field
            $color = explode(',', $data[$c]);
            $color_count = count($color);
            for($i=0; $i<$color_count; $i++){

                fputcsv($fp, array($name,$desc,$color[$i]));
            }

        }

    }
            $row++;
}
fclose($handle);
}
$row = 1;

if (($handle = fopen("test.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    $num = count($data);
    $name = $data[0];
    $desc = $data[1];


    for ($c=0; $c < $num; $c++) {            

        if($c == 2){ //if we are at color field
          $fp = fopen('file.csv', 'a'); //Open for writing only; place the file pointer at the end of the file.
            $color = explode(',', $data[$c]);
            $color_count = count($color);
            for($i=0; $i<$color_count; $i++){
                fputcsv($fp, array($name,$desc,$color[$i]));
            }
            fclose($fp);
        }

    }

            $row++;
}
fclose($handle);