チョコミントアイス

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

A 回答 (2件)

想像です。


$idのレコードもしくはその直前のレコードまでしか処理してないとか。
countとそれから全行プリントしてみたら?
CSVのEOFが動いてるかも。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/11/05 12:55

削除されるスクリプトには見えませんね


ただ
$data[$id] ="テスト書き込み";

$data[$id] ="テスト書き込み\n";
にしないと行がつながってしまいますね。
    • good
    • 0
この回答へのお礼

失礼しました。
指定行を削除し「テスト書き込みを」上書きしたいと言う意味です。
\nを入れ忘れました。

質問に不備がありました。申し訳ありません。

お礼日時:2006/11/04 11:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!