我想编辑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" ";} ?>
有人知道我做错了吗?
答案 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
。因此,只有第一行将替换为新值,其他行将保留为相同的数据。