您好我在这里正在阅读CSV文件,我正在尝试将CSV文件数据写入.txt文件。
$row = 1;
if (($handle = fopen("data.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
echo "<p> $num fields in line $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
$myfile = fopen("newfile.txt", "w") or die ("unable to open file");
fwrite($myfile, $data[$c]);
}
}
fclose($handle);
}
正在创建newfile.txt,并且只有CSV文件中的最后一条记录显示在newfile.txt中。任何人都可以告诉我为什么CSV中的所有内容都没有显示在我的newfile.txt中(只显示最后一条记录)。谢谢
答案 0 :(得分:2)
您只需要打开一次新文件。
$row = 1;
if (($handle = fopen("data.csv", "r")) && $myfile = fopen("newfile.txt", "w")) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
echo "<p> $num fields in line $row: <br /></p>\n";
$row++;
fputcsv($myfile, $data);
}
fclose($handle);
fclose($myfile);
}
答案 1 :(得分:1)
使用a+
参数而不是w
fopen
打开您的文件。
从the doc,模式&#39; w&#39;打开仅供写入,而模式&#39; a +&#39;打开以进行读写,并将文件指针放在文件末尾。如果该文件不存在,则会尝试创建该文件。
$row = 1;
if (($handle = fopen("data.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
echo "<p> $num fields in line $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
$myfile = fopen("newfile.txt", "a+") or die ("unable to open file");
fwrite($myfile, $data[$c]);
}
}
fclose($handle);
}
答案 2 :(得分:1)
答案 3 :(得分:1)
这可能是因为每次编写记录并覆盖其内容时都会重新打开文本文件。以附加模式打开文件(不能告诉你如何,我不是一个php程序员)或只打开你的文本文件一次,并在一个会话中写几次。
编辑:你应该使用'a'或'a +'而不是'w'作为fopen的参数,如下所述:http://php.net/manual/en/function.fopen.php