2016-07-08 19 views
0

次のコードを使用してcsvとしてデータをエクスポートしようとしていますが、ファイルの最後に不要な「null」が追加されています。fputcsvはファイルの末尾に 'null'を追加します

$array = array(); 
$fileName = 'test.csv'; 
$array[0] = ['Name','Email']; 
$array[1] = ['Test','[email protected]']; 
$fileObj = new FileStream(); 
$fileObj->array_to_csv_download($array,$fileName); 

array_to_csv_downloadコード -

$f = fopen('php://memory', 'w'); 
    foreach ($array as $line) { 
     $this -> logObj -> LogError(" CSV ".json_encode($line)); 
     fputcsv($f, $line, $delimiter); 
    } 
    fseek($f, 0); 
    header('Content-Type: application/csv'); 
    header('Content-Disposition: attachment; filename="'.$filename.'";'); 
    fpassthru($f); 

出力 -

Name,Email 
Test,[email protected] 
null 

私は何かが足りないのですか?

+0

FileStreamのarray_to_csv_download()コードとは何ですか? 'test.csv'の内容は何ですか –

+0

@MarcinOrlowskiすみません、私はそれを逃しました。今すぐご確認ください。 – Harshit

+0

明らかに、イテレータ(fpassthruなど)がファイルの終わり(eof)に達するとヌルを返すという事実はありません。 eofには「ヌル文字」はありません。これは、あなたが 'while not null'ステートメントを使ってeofを判断する方法です。 –

答えて

1

CSVを直接生成するのはどうですか?私のために働く。

header('Content-Type: application/csv'); 
foreach($array as $fields) { 
    echo implode(",", $fields)."\n"; 
} 
+0

これはnullも追加します。 – Harshit

関連する問題