在PHP中将CSV的特定列保存到另一个CSV文件

在PHP中将CSV的特定列保存到另一个CSV文件,php,csv,Php,Csv,因此,尝试读取csv文件并从文件中提取详细信息,并希望将csv的特定列存储到另一个csv文件中 我已设法提取输入csv文件的特定列,但不确定如何将这些提取的列写入另一个csv文件 以下是我工作的一部分: $row = 1; if (($handle = fopen("testtable.csv", "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $num = coun

因此,尝试读取csv文件并从文件中提取详细信息,并希望将csv的特定列存储到另一个csv文件中

我已设法提取输入csv文件的特定列,但不确定如何将这些提取的列写入另一个csv文件

以下是我工作的一部分:

$row = 1;
if (($handle = fopen("testtable.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $num = count($data);
        $row++;
        echo $data[0] . "\n" . $data[1] . "<br />\n";

    }
    $file = fopen("editedTable.csv","w");
    foreach ( $data as $line) {             //working on this part of the code
        fputcsv($file, explode(',',$line));
    }
    fclose($handle);
}
$row=1;
if($handle=fopen(“testtable.csv”,“r”)!==FALSE){
while(($data=fgetcsv($handle,1000,“,”)!==FALSE){
$num=计数($data);
$row++;
echo$data[0]。“\n”。$data[1]。“
\n”; } $file=fopen(“editedTable.csv”,“w”); foreach($data as$line){//处理这部分代码 fputcsv($file,explode(',',$line)); } fclose($handle); }
显然,在我试图计算逻辑时,foreach循环中有一个错误

提取的数据基本上是第一列和第二列(数据[0],数据[1])。只需将其写入另一个CSV文件。输入csv只是一个逗号分隔的文件,有5列。知道如何修改foreach循环和使用fputcsv方法吗


谢谢

因为您将FPUT放在$data初始循环之外,所以只捕获一行,下面是修改后的代码

     $row = 1;
     $file = fopen("editedTable.csv","w");

    if (($handle = fopen("testtable.csv", "r")) !== FALSE) {
        while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
            $num = count($data);
            $row++;
            echo $data[0] . "\n" . $data[1] . "<br />\n";
            $line = $data[0].", ".$data[1];
            $line .=  "\n";
            fputs($file, $line);
       }
      fclose($handle);
   }
   fclose($file);
$row=1;
$file=fopen(“editedTable.csv”,“w”);
if($handle=fopen(“testtable.csv”,“r”)!==FALSE){
while(($data=fgetcsv($handle,1000,“,”)!==FALSE){
$num=计数($data);
$row++;
echo$data[0]。“\n”。$data[1]。“
\n”; $line=$data[0]。“,”$data[1]; $line.=“\n”; fputs($file,$line); } fclose($handle); } fclose($文件);
因为将FPUT放在$data初始循环之外,所以只捕获一行,下面是修改后的代码

     $row = 1;
     $file = fopen("editedTable.csv","w");

    if (($handle = fopen("testtable.csv", "r")) !== FALSE) {
        while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
            $num = count($data);
            $row++;
            echo $data[0] . "\n" . $data[1] . "<br />\n";
            $line = $data[0].", ".$data[1];
            $line .=  "\n";
            fputs($file, $line);
       }
      fclose($handle);
   }
   fclose($file);
$row=1;
$file=fopen(“editedTable.csv”,“w”);
if($handle=fopen(“testtable.csv”,“r”)!==FALSE){
while(($data=fgetcsv($handle,1000,“,”)!==FALSE){
$num=计数($data);
$row++;
echo$data[0]。“\n”。$data[1]。“
\n”; $line=$data[0]。“,”$data[1]; $line.=“\n”; fputs($file,$line); } fclose($handle); } fclose($文件);
fputcsv
接受第二个参数上的数组

我想这就是你想要的:

<?php
$file = fopen("editedTable.csv","w");
$row = 1;
if (($handle = fopen("testtable.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000)) !== FALSE) {
        $num = count($data);
        $row++;
        echo $data[0] . "\n" . $data[1] . "<br />\n";
        fputcsv($file, [$data[0], $data[1]]);
    }
}
fclose($handle);
fclose($file);

fputcsv
接受第二个参数上的数组

我想这就是你想要的:

<?php
$file = fopen("editedTable.csv","w");
$row = 1;
if (($handle = fopen("testtable.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000)) !== FALSE) {
        $num = count($data);
        $row++;
        echo $data[0] . "\n" . $data[1] . "<br />\n";
        fputcsv($file, [$data[0], $data[1]]);
    }
}
fclose($handle);
fclose($file);