- ベストアンサー
PHPのファイルオープンモードについて
- PHPのファイルオープンモードには、新しい記事を上のほうに表示するための適切なモードが存在します。
- ファイルオープンモード'a+'は、ファイルポインタをファイルの末尾に移動し、新しい記事をラストに表示します。
- 一方、ファイルオープンモード'w+'はファイルポインタを先頭に移動しますが、ファイルサイズを0にしてしまい、前のレコードは消去されます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
そんなモードはありません。 原稿用紙はご存知ですね? ハードディスク等にあるファイルは、その原稿用紙のようなものです。 ファイルに書き込むとは、原稿用紙に書き込むようなものです。 ・新しく書く ・続きを書く ・一文字消して、別の一文字を書く くらいは簡単にできます。 しかし、 ・先頭(または途中)に文字を挿入 しようとしたら、どうなるでしょうか。 後から順番に、ずらしたマスに書いて、元の文字を消して、空いたマスにずらした文字を書いて...ということをやって、マスを空けてから、挿入する文字を書く、ということになります。 こんな複雑な操作は、標準では用意されていません。 実現しようとしたら、上のような感じのプログラムを作る必要があります。 別の方法を考えましょう ○ a+で追記。読むときは、最後の行までは読み飛ばして、最後の行を読む ○ メモリが許すなら、全内容を配列にでも読み込んで、先頭に挿入したら、その配列全部を書き出す
その他の回答 (1)
以下を参考にどうぞ。 [シリアル版] ページング処理を採り入れた掲示板サンプル http://qiita.com/mpyw/items/e7f3f60b687053b7832a こちらでは記事を配列に格納し、シリアル形式で保存/復元を行っています。記事が何十万件という膨大な数になるまではこれでもまともに動いてくれるはずです。PHPから扱う分にはCSVよりもシリアルの方がはるかにラクですね。また、厳密には >> 'a+' だとファイルポイントをファイルの末尾に置く為 この認識は誤りです。マニュアルにはそう書かれていますが、実際に「未定義」としてごまかされている挙動をチェックすると、ポインタはファイルの先頭に置かれています。 [PHP] ファイルオープンモードに関するマニュアルの記述は間違っている http://qiita.com/mpyw/items/3adcec3c66e515895b08
お礼
ご回答ありがとうございました。
お礼
ご説明、どうもありがとうございました。