【PHP】csvファイルへの書き出し(1行追加or1行上書き)について
【PHP】csvファイルへの書き出し(1行追加or1行上書き)について
はじめて利用させていただきます。
現在、PHPにて書き出し処理を作成している者ですが、csvファイルへの書き出しの際に先頭行にスペースが大量に入ってしまい、困っています。
自分なりに調べてみたのですが、原因がわかりません。詳しい方からのアドバイスをお願いしたいです。
【行っている処理】
1.csvファイルを1行ずつ読み込み、配列に格納
2.既存のデータに同じ名前の人が存在する場合は、その行の配列の内容を変更(存在しない場合は配列の末尾に1件追加)
4.現在ファイルにあるデータを削除(丸めこみ)し、配列データを書き書き出し
【ソース】(書き出し処理に問題があると思ったため、それ以外の部分は割愛させていただきます)
<?php
$filename = 'data.csv';
$file = fopen($filename, "r+" );
$name = array();
if(flock($file,LOCK_SH)){
while( $data = fgetcsv( $file, 1000, "," ) ) {
//配列に格納
}
//配列の内容変更or新規に一行追加処理
//現在のファイル内のデータを削除(まるめこみ)
ftruncate($file, 0);
//1行分のデータをカンマ区切りで結合し、書き出し
for($i = 0; $i < $count; $i++){
$ins = $name[$i];
$ins .= ',';
$ins .= $number[$i];
//書き込み失敗時のエラー
if(fwrite($file, "$ins\n" ) === FALSE){
print("ファイル書き込みに失敗しました");
}else{
//処理なし
}
}
//ファイルロック解除
flock($file, LOCK_UN);
}else{
print("ファイルロックに失敗しました");
}
【csvファイルの中身(処理実行前)】
佐藤,1234
田中,12345
中村,9876
【csvファイルの中身(処理実行後)】
佐藤,1234
田中,12345
中村,9876
以上です。
よろしくお願いします。