- ベストアンサー
csvファイルを読み込み→上書きするスクリプト【添削願】
csvファイルを読み込み→上書きするスクリプトを作ってみましたがうまく行かないときがあり原因を考えています。 100行程度のcsvから任意の行($idで指定したもの)を書き換えたいのですが、(テスト書き込みを)書き込んでくれるときと指定したその行だけ削除されてしまうときとまちまちです。 なぜ2パターンの結果がでるのでしょうか? お力をお借りできると幸いです。 <?php //データの取り出し $id = $_GET['id']; $data = file("data/file.csv"); //idで指定した行に書き込み $data[$id] ="テスト書き込み"; //csvファイルにデータの書き込み $file = fopen("data/file.csv","w+"); flock($file, LOCK_EX); for($i=0; $i<count($data); $i++) { fwrite($file,$data[$i]); } fclose($file); ?>
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
想像です。 $idのレコードもしくはその直前のレコードまでしか処理してないとか。 countとそれから全行プリントしてみたら? CSVのEOFが動いてるかも。
その他の回答 (1)
- php504
- ベストアンサー率42% (926/2160)
回答No.1
削除されるスクリプトには見えませんね ただ $data[$id] ="テスト書き込み"; は $data[$id] ="テスト書き込み\n"; にしないと行がつながってしまいますね。
質問者
お礼
失礼しました。 指定行を削除し「テスト書き込みを」上書きしたいと言う意味です。 \nを入れ忘れました。 質問に不備がありました。申し訳ありません。
お礼
ありがとうございました。 参考になりました。