• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPのファイルオープンモードについて)

PHPのファイルオープンモードについて

このQ&Aのポイント
  • PHPのファイルオープンモードには、新しい記事を上のほうに表示するための適切なモードが存在します。
  • ファイルオープンモード'a+'は、ファイルポインタをファイルの末尾に移動し、新しい記事をラストに表示します。
  • 一方、ファイルオープンモード'w+'はファイルポインタを先頭に移動しますが、ファイルサイズを0にしてしまい、前のレコードは消去されます。

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

そんなモードはありません。 原稿用紙はご存知ですね? ハードディスク等にあるファイルは、その原稿用紙のようなものです。 ファイルに書き込むとは、原稿用紙に書き込むようなものです。 ・新しく書く ・続きを書く ・一文字消して、別の一文字を書く くらいは簡単にできます。 しかし、 ・先頭(または途中)に文字を挿入 しようとしたら、どうなるでしょうか。 後から順番に、ずらしたマスに書いて、元の文字を消して、空いたマスにずらした文字を書いて...ということをやって、マスを空けてから、挿入する文字を書く、ということになります。 こんな複雑な操作は、標準では用意されていません。 実現しようとしたら、上のような感じのプログラムを作る必要があります。 別の方法を考えましょう ○ a+で追記。読むときは、最後の行までは読み飛ばして、最後の行を読む ○ メモリが許すなら、全内容を配列にでも読み込んで、先頭に挿入したら、その配列全部を書き出す

beterugius
質問者

お礼

ご説明、どうもありがとうございました。

その他の回答 (1)

noname#244856
noname#244856
回答No.2

以下を参考にどうぞ。 [シリアル版] ページング処理を採り入れた掲示板サンプル http://qiita.com/mpyw/items/e7f3f60b687053b7832a こちらでは記事を配列に格納し、シリアル形式で保存/復元を行っています。記事が何十万件という膨大な数になるまではこれでもまともに動いてくれるはずです。PHPから扱う分にはCSVよりもシリアルの方がはるかにラクですね。また、厳密には >> 'a+' だとファイルポイントをファイルの末尾に置く為 この認識は誤りです。マニュアルにはそう書かれていますが、実際に「未定義」としてごまかされている挙動をチェックすると、ポインタはファイルの先頭に置かれています。 [PHP] ファイルオープンモードに関するマニュアルの記述は間違っている http://qiita.com/mpyw/items/3adcec3c66e515895b08

beterugius
質問者

お礼

ご回答ありがとうございました。

関連するQ&A

専門家に質問してみよう