我需要做的是每次运行.php到另一个名为testdata_new.csv(附加数据)的.csv时,都可以从testdata.csv移动第一行。
这是包含姓名,年龄,工作
的数据示例示例数据testdata.csv:
约翰,32,科学家
玛丽,25,雇主
尼克,36岁,设计师
Miky,46岁,销售
亚历克斯,29,物流
这就是.php运行它的方法: 从testdata.csv(john,32,科学家)中删除第一行并将其粘贴到第一行(标题)下的新testdata_new.csv,该行始终为“Name Age Job”。 使用剩余的行保存testdata_new.csv和testdata.csv。
我做了一些测试,但我还远离解决方案。
<?php
$file = "testdata.csv";
$f = fopen($file, "r");
$i = 0;
$file2 = str_replace(".csv", "_new.csv", $file);
$f2 = fopen($file2,"a");
while ($i<2) {
$record = fgetcsv($f);
foreach($record as $field) {
echo $field . "<br>";
}
$i++;
}
fwrite($f2,fread($f, filesize($file)));
fclose($f);
fclose($f2);
?>
执行脚本将显示template.csv文件的第一行 并将生成另一个名为template_new.csv的文件,其中包含以下行:
玛丽,25,雇主
尼克,36岁,设计师
Miky,46岁,销售
亚历克斯,29,物流
我在template_new.csv文件中真正需要的只是显示的第一行:
约翰,32岁,科学家
再次保存template.csv而没有第一行,因为想法是剪切和粘贴行,如下所示:
玛丽,25,雇主
尼克,36岁,设计师
Miky,46岁,销售
亚历克斯,29,物流
提前感谢大家的帮助!
答案 0 :(得分:0)
这很容易; - )
$old_file = 'testdata.csv';
$new_file = 'testdata_new.csv';
$file_to_read = file_get_contents($old_file); // Reading entire file
$lines_to_read = explode("\n", $file_to_read); // Creating array of lines
if ( $lines_to_read == '' ) die('EOF'); // No data
$line_to_append = array_shift( $lines_to_read ); // Extracting first line
$file_to_append = file_get_contents($new_file); // Reading entire file
if ( substr($file_to_append, -1, 1) != "\n" ) $file_to_append.="\n"; // If new file doesn't ends in new line I add it
// Writing files
file_put_contents($new_file, $file_to_append . $line_to_append . "\n");
file_put_contents($old_file, implode("\n", $lines_to_read));