open したら close するのを忘れずに。close しないとini_write
関数で加えた変更などがファイルに反映されません。
参考URL(YoYoGames):ini_open(filename);
Open と Close って?
ini_open
とini_close
関数のことです。
ini_open 関数は指定された INI ファイルをメモリ上に読み込む作業を行います。この作業以降は一旦メモリ上のデータとして扱われることになります。
ini_open 関数は1つのファイル読み込みにしか対応しておらず、同時に複数のファイルを開くことができません。
INI はフェイルセーフなので存在しないキーやセクションを指定した場合、エラーを返さずにデフォルト値(定義可能)を返す仕様となっています。ファイル有無の確認についても同じで、ini_open は存在しないファイルを指定された場合にはエラーを返さず、新しい空のファイルを作ります。
つまり open は create
も兼ねていて、ちゃんとファイルが存在すればそれを開くし、無かったら新しく作るという動作仕様になっています。だから必要な場合 open する前にファイルの存在はfile_exists
関数を使って別に確認をします。
ini_open 関数の実行後、ini_read も ini_write もメモリ上に展開されたデータに対する操作であり、実体ファイルにはまだ一切の変更が加えられていません。
つまり変更があっても逐一ファイルに対してアクセスしないということで、ファイルアクセスは動作パフォーマンスを落とすボトルネックになりやすいため、この仕様が正しい。
編集した後のデータをファイルに保存して変更を反映するためには仕上げにini_close();
を実行します。これで実際のファイルにデータの変更が保存されたことに成ります。