使用PHP编辑第一行CSV

时间:2013-09-16 09:34:48

标签: php parsing csv

我想编辑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" ";} ?>

有人知道我做错了吗?

1 个答案:

答案 0 :(得分:1)

你应该尝试:

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