• ベストアンサー

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); ?>

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

想像です。 $idのレコードもしくはその直前のレコードまでしか処理してないとか。 countとそれから全行プリントしてみたら? CSVのEOFが動いてるかも。

marry1224
質問者

お礼

ありがとうございました。 参考になりました。

その他の回答 (1)

  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

削除されるスクリプトには見えませんね ただ $data[$id] ="テスト書き込み"; は $data[$id] ="テスト書き込み\n"; にしないと行がつながってしまいますね。

marry1224
質問者

お礼

失礼しました。 指定行を削除し「テスト書き込みを」上書きしたいと言う意味です。 \nを入れ忘れました。 質問に不備がありました。申し訳ありません。

関連するQ&A