Ajouter une nouvelle ligne à un fichier CSV
Si j'ai un fichier CSV enregistré sur un serveur, comment puis-je utiliser PHP pour écrire une ligne donnée, disons 142,fred,elephants au fond d'elle?
33
                
            
                demandé sur
                Damon
                2012-07-09 20:24:17
            
        4 réponses
Ouvrez le fichier CSV pour l'ajout (fopenDocs):
$handle = fopen("test.csv", "a");
, Puis ajoutez votre ligne (fputcsvDocs):
fputcsv($handle, $line); # $line is an array of string values here
, Puis fermez la poignée (fcloseDocs):
fclose($handle);
J'espère que cela est utile.
79
	                    
	                
	                    répondu
	                    hakre
	                    2015-05-29 20:46:20
	                
	            Vous pouvez utiliser une classe d'interface orientée objet pour un fichier-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', 'dddd'));
$file = null;
	                8
	                    
	                
	                    répondu
	                    elshnkhll
	                    2015-12-24 16:26:16
	                
	            Si vous voulez que chaque fichier fractionné conserve les en-têtes de l'original; c'est la version modifiée de la réponse de hakre:
$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
	                    
	                
	                    répondu
	                    Lewis
	                    2017-05-02 12:41:21
	                
	            Cette solution fonctionne pour moi:
<?php
$list = array
(
"Peter,Griffin,Oslo,Norway",
"Glenn,Quagmire,Oslo,Norway",
);
$file = fopen("contacts.csv","w");
foreach ($list as $line)
  {
  fputcsv($file,explode(',',$line));
  }
fclose($file); 
?>
Ref: https://www.w3schools.com/php/func_filesystem_fputcsv.asp
0
	                    
	                
	                    répondu
	                    webdevfreak
	                    2017-09-13 13:26:19