【发布时间】:2013-11-15 17:18:38
【问题描述】:
我有一个基本的 PHP 脚本,可以从一个数组创建一个 csv 文件。下面是代码示例:
$array = [
[1,2,3],
[4,5,6]
];
$handle = fopen('test.csv', 'w');
foreach($array as $v)
fputcsv($handle, $v);
fclose($handle);
生成的文件在文件末尾总是有一个空行,因为 fputcsv 不知道这是最后一行。关于如何防止这种情况的任何(简单)想法?
编辑:
原来的问题现在无关紧要(对我来说,但也许有人需要这样做)。 fputcsv 应该添加一个新行,即使在文档末尾也是如此,这是所有 csv 文件的预期行为。
我标记了解决原始问题的答案,即使它与我不再相关。
所以在我的上下文中,我需要检查数组的最后一行(或任何一行)是否为 NULL(否则 PHP 将通过警告 fputcsv 的第二个参数为空)。如果有人感兴趣,这是我更新的脚本:
$array = [
[1,2,3],
[4,5,6]
];
$handle = fopen('test.csv', 'w');
foreach($array as $v)
if($v != NULL)
fputcsv($handle, $v);
fclose($handle);
【问题讨论】:
-
所有行都应该有一行结尾。空行将是连续的两个换行符。
-
文件末尾有空行有什么问题?为什么这是不受欢迎的?我运行了你的代码,打开文件时 Excel 显示了 2 行。
-
脚本实际上是一个类的一半,它接受一个 csv,将其转换为一个数组,然后返回一个新的 csv(以便您可以使用 PHP 来更改 CSV)。我不想要任何不在原始文档中的额外行。
-
@user1564018:文件中的“额外行”应该不会导致任何问题。这不是您需要担心的问题。
-
例如,如果我运行了一个 csv,其中额外的行通过脚本结束,我得到:警告:fputcsv() 期望参数 2 是数组,给定布尔值
标签: php