2

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

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

4

1 回答 1

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

于 2013-09-16T09:56:16.707 回答