PHP - BASIC - 11. PHPのファイルシステムを扱う関数 - 7. ファイルの書き込み

ファイルの書き込みも fopen 関数、 fwrite 関数、 fclose 関数によって制御できます。

  • fopen - ファイルまたは URL をオープンする
  • fwrite - バイナリセーフなファイル書き込み処理
  • fclose - オープンされたファイルポインタをクローズする

次のプログラム( fs6.php )を作成してみましょう。

<?php
$names = ["Andy", "Betty"];
$file = "names.txt";
$handle = fopen($file, "w");
foreach($names as $name) {
  fwrite($handle, $name . PHP_EOL);
}
fclose($handle);

まずはプログラムを実行してみましょう。

$ php fs6.php

プログラムを実行してもターミナル上には何も表示されないでしょう。その代わりにカレントディレクトリ上に names.txt というファイルが作成されているのがわかるでしょう。

テキストエディタで names.txt ファイルを開いてみましょう。

Andy
Betty

上記のようにプログラムによって出力した2件の名前が確認できるでしょう。

それではプログラムの詳細を見てみましょう。このプログラムは配列 $names に代入されている3人の名前をファイルに書き込むプログラムです。 fopen 関数でファイルを開いていますがアクセス形式に ”w” を指定しています。

$handle = fopen($file, "w"); 

アクセス形式 ”w” は上書きモードでファイルに書き込みを行います。

アクセス形式に “a” を指定すると追記モードになります。

その後、プログラムでは foreach 文の中で fwrite 関数を使ってファイルにデータを書き込んでいます。

foreach($names as $name) {
  fwrite($handle, $name . PHP_EOL); 
}

fwrite 関数は第1引数にファイルポインタ、第2引数にファイルに書き込むデータを指定します。

foreach 文の繰り返し処理を終えた後は fclose 関数でファイルを閉じています。

fclose($handle);

このようにファイルの書き込み処理も fopen 関数、 fwrite 関数、 fclose 関数を組み合わせて制御できます。

まとめ

  • fopen 関数は戻り値にファイルポインタを返す
  • fwrite 関数はファイルポインタにデータを書き込む
  • fclose 関数でファイルポインタを破棄する

fwrite - バイナリセーフなファイル書き込み処理

  • 引数
    1. ファイルポインタ
    2. ファイルに書き込むデータ
  • 戻り値
    • 書き込んだバイト数
    • 失敗した場合は false