使用 PHP 编辑第一行 CSV


Edit first line CSV with PHP

我想编辑CSV文件的第一行(列标题)。只有一个问题,我的脚本正在替换所有内容。我试图寻找解决方案,但没有运气。

脚本:

<?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" ";} ?>

有人知道我做错了什么吗?

你应该尝试:

$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是一个标志,用于检测第一行并将$data数组值替换为标题数组。然后你应该把$data推到$newCsvData。因此,只有第一行将被新值替换,其他行将保持相同的数据。