I have a basic PHP script that creates a csv file from an array. Here is an example of the code:
$array = [
[1,2,3],
[4,5,6]
];
$handle = fopen(\'te
Add exit(); at the end, after fclose(handle);
Like @Barmar says, all lines have a line ending, let's say \n. What you see as a blank line at the end of the file is your editor doing that. A truly blank line is two line-ending characters in succession. (\n\n for example)
Imagine you have a blank file:
(EOF)
If you fputcsv this: array(0,"hello",3323) you get
(0,hello,3323\nEOF)
given PHP docs:
fputcsv() formats a line (passed as a fields array) as CSV and write it (terminated by a newline) to the specified file handle.
A blank line in your editor is expected then. But in the file there's no such thing.
I found this solution on another question: https://stackoverflow.com/a/8354413/1564018
$stat = fstat($handle);
ftruncate($handle, $stat['size']-1);
I added these two lines after fputcsv() and they removed the last new line character, removing the blank line at the end of the file.
fputcsv
adds a new line after each line, that's how it works. From the docs:
fputcsv() formats a line (passed as a fields array) as CSV and write it (terminated by a newline)
A new line at the end of a file is not an error, or something you need to worry about. Don't try to remove it, just leave it.
In the comments, you mention you got an error:
Warning: fputcsv() expects parameter 2 to be array, boolean given
This is probably because you are not using fgetcsv
correctly. It returns FALSE
when it hits the end of the file (the new line). The docs show you how to use it correctly:
while (($data = fgetcsv($handle)) !== FALSE) {
}