Add a new line to a CSV file

前端 未结 4 1515
心在旅途
心在旅途 2020-12-24 04:57

If I have a CSV saved on a server, how can I use PHP to write a given line, say 142,fred,elephants to the bottom of it?

相关标签:
4条回答
  • 2020-12-24 05:24

    Open the CSV file for appending (fopen­Docs):

    $handle = fopen("test.csv", "a");
    

    Then add your line (fputcsv­Docs):

    fputcsv($handle, $line); # $line is an array of strings (array|string[])
    

    Then close the handle (fclose­Docs):

    fclose($handle);
    

    I hope this is helpful.

    0 讨论(0)
  • 2020-12-24 05:31

    You can use an object oriented interface class for a file - SplFileObject http://php.net/manual/en/splfileobject.fputcsv.php (PHP 5 >= 5.4.0)

    $file = new SplFileObject('file.csv', 'a');
    $file->fputcsv(array('aaa', 'bbb', 'ccc', 'ffffdd'));
    $file = null;
    
    0 讨论(0)
  • 2020-12-24 05:33

    If you want each split file to retain the headers of the original; this is the modified version of hakre's answer:

    $inputFile = './users.csv'; // the source file to split
    $outputFile = 'users_split';  // this will be appended with a number and .csv e.g. users_split1.csv
    
    $splitSize = 10; // how many rows per split file you want 
    
    $in = fopen($inputFile, 'r');
    $headers = fgets($in); // get the headers of the original file for insert into split files 
    // No need to touch below this line.. 
        $rowCount = 0; 
        $fileCount = 1;
        while (!feof($in)) {
            if (($rowCount % $splitSize) == 0) {
                if ($rowCount > 0) {
                    fclose($out);
                }
                $out = fopen($outputFile . $fileCount++ . '.csv', 'w');
                fputcsv($out, explode(',', $headers));
            }
            $data = fgetcsv($in);
            if ($data)
                fputcsv($out, $data);
            $rowCount++;
        }
    
        fclose($out);
    
    0 讨论(0)
  • 2020-12-24 05:47

    This solution works for me:

    <?php
    $list = array
    (
    'Peter,Griffin,Oslo,Norway',
    'Glenn,Quagmire,Oslo,Norway',
    );
    
    $file = fopen('contacts.csv','a');  // 'a' for append to file - created if doesn't exit
    
    foreach ($list as $line)
      {
      fputcsv($file,explode(',',$line));
      }
    
    fclose($file); 
    ?>
    

    Ref: https://www.w3schools.com/php/func_filesystem_fputcsv.asp

    0 讨论(0)
提交回复
热议问题