bardo
bardo

Reputation: 35

Edit first line CSV with PHP

I want to edit the first line (column titles) of an CSV file. Only one problem, the script I have is replacing everything. I've tried to search for a solution, but no luck.

Script:

<?php if(isset($_FILES["file"]["tmp_name"])){
$newCsvData = array();
if (($handle = fopen("".$_FILES["file"]["tmp_name"]."", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {  $base = array("EAN","article","status");
        $replacements = array(1=> "SKU");
        $basket = array_replace($base, $replacements);
        $newCsvData[] = $basket;        
    }
    fclose($handle);
}
$handle = fopen("export/".$_FILES["file"]["name"]."", "w");
foreach ($newCsvData as $line) {    
   fputcsv($handle, $line); 
}
fclose($handle); } else{ echo" ";} ?>

Does someone know what I'm doing wrong?

Upvotes: 2

Views: 2468

Answers (1)

Vahid Hallaji
Vahid Hallaji

Reputation: 7467

You should try:

$first = true;
while (($data = fgetcsv($handle, 1000, ",")) !== false) {
    $base = array("EAN", "article", "status");
    $replacements = array(1 => "SKU");
    if($first){
        $data = array_replace($base, $replacements);
        $first = false;
    }
    $newCsvData[] = $data;
}

$first is a flag to detect just first row and replacing $data array values with titles array. Then you should push $data to $newCsvData. So only first row will replace by new values and other rows will remain as same data.

Upvotes: 1

Related Questions