WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:explode関数の使用について

0:[投稿] かに [2008/01/09 06:57 ] [環境:winxp unix]

現在、データをファイル管理しており、
項目ごとに、ファイル書き込み時には、
”<>”で書き込みしており、読み込みするときは、
explode関数を使用して、配列化しております。

データごとに、IDが振られており、
新規で書き込み時には、IDを+1するという処理を行っています。

ところが、読み込み時、IDが'10'の場合、
explode関数で抜き出すと、'1'になってしまい、
最大値の'9'にIDを+1する処理になってしまいます。

この場合の対処方法をお願いいたします。


1:[回答] tk [2008/01/09 16:41 ]

そのexplode関数ってのは、なんの言語の関数なんですか?
どう使用しているのですか?


2:[回答] かに [2008/01/09 23:01 ]

>tkさん

PHPの関数です。

ソースを記述します。
$fp = fopen($this->data_file, 'r');
while ($line = fgets($fp)){
 // 行数カウント
 $fields = explode('<>', trim($line));
}

$this->data_fileは、テキストファイルです。
書き込みしていて気づいたのですが、
もしかしたら読み込むファイルがcvsファイルの方が
いいのでしょうか?            


3:[回答] かに [2008/01/09 23:10 ]

すいません、
コメントの"行数カウント "は無視してください。

でもどうしてもテキストファイルで行いたいです。

データは以下のようになっております。

【data.txt】
  10<>0<><>test10<>2008/01/01<>test10
  9<>0<><>test9<>2008/01/01<>test9
  8<>0<><>test9<>2008/01/01<>test8

一番最初のデータがIDになっております。


4:[回答] tk [2008/01/11 00:45 ]

CVSはたぶんCSVの事でしょうか。アレもテキストファイルだったような。

explode関数は文字列を区切り記号で分割して配列にするだけです。
>explode関数で抜き出すと、'1'になってしまい、
という事はちょっと考えられないと思います。
原因はほかの所(例えばIDの計算部分、IDを収めている変数)にあるのではないかと。
$fields = explode('<>', trim($line));
の次の行で
var_dump($fields);
とすると配列の中身を表示させる事ができます。
変数や配列の中身を確認してみてはどうでしょう。


5:[完了] かに [2008/01/29 00:42 ]

>tkさん

大変申し訳御座いません。

自分のバグでした。

explode関数を使用するタイミングが悪かったようです。

つまらないことで、たいへんお手数をお掛けしました。

回答(必須): 状態:

お名前(必須):

URL:




[戻る]