PHP超入門 (36)


先ずは、今回はお詫びと追加訂正です。


■お詫び&追加訂正

前回、空のテキストファイルに文章を書き込んだり、既にある内容を上書きす
る次のようなプログラムをご紹介いたしました。


----------------------------------------------------------
<?php
$file = fopen("C:\\inetpub\\wwwroot\\php\\090-1.txt","r+");

fwrite($file,"あなたの実年齢は25歳です。")

?>
----------------------------------------------------------


実は、このプログラムは動くことは動くのですが、大切な最後の一行が抜けて
いました。

正しくは、次のようになります。

----------------------------------------------------------
<?php
$file = fopen("C:\\inetpub\\wwwroot\\php\\090-1.txt","r+");

fwrite($file,"あなたの実年齢は25歳です。")

fclose($file);
?>
----------------------------------------------------------

そう、最後の「fclose(ファイルクローズ)」関数で、一行目で開いた文書を
閉じる操作が抜けていたのです。

前回の場合、何事も無く動きましたが、少し複雑なプログラムを作ろうとした
場合、思わぬエラーを起こすことが考えられますので、「fopen(ファイルオ
ープン)」関数でファイルを開けた場合は、最後に必ず、fclose関数で、開い
たファイルを閉じることを忘れないようにしてください。

イメージとしては、ワードやエクセルでファイルを開いた後、使い終わったら
そのファイルは閉じておく、ということと同じような感じです。


なお、このファイルを扱うお話で、最初に出てきたプログラム

----------------------------------------------------------
<?php
$file = fopen("C:\\inetpub\\wwwroot\\php\\088-1.txt","r");

fpassthru($file);
?>
----------------------------------------------------------

の「fpassthru(ファイルパススルー)」関数の場合は、この関数の動作が終
わった後、開いたファイルを閉じる作業を自動的に実行してくれるので、fclo
se関数を書く必要はありません。



■ファイルを自動的に作ってくれる引数「w」

今まで紹介してきたプログラムで

 $file = fopen("C:\\inetpub\\wwwroot\\php\\090-1.txt","r+");

の部分の引数にあたる「r+」や「r」の場合、基となるテキスト文書(この場
合は「090-1.txt」)が最初から存在してくれないとエラーとなってしまいます。

ですから、何かテキストファイルに書き込もうと思ったら、そのファイルを手
作業で予め準備しておかなければなりません。

考えようによってはめんどくさいですね。

そのようなめんどくさがり屋さんのために、便利な引数があります。

それが「w」あるいは「w+」です。


話だけではナンなので、まずは実例から。。。

----------------------------------------------------------
<?php
$file = fopen("C:\\inetpub\\wwwroot\\php\\091-1.txt","w");

fwrite($file,"あなたの脳年齢は52歳です。");

fclose($file);
?>
----------------------------------------------------------

このPHPプログラムを「091-1.php」の名前で、「C:\inetpub\wwwroot\php」フ
ォルダに保存します。


そして、ブラウザのアドレス欄に「http://localhost/php/091-1.php」と入力
してください。

そうすると、画面上では何も変化が現れませんが、


「C:\inetpub\wwwroot\php」フォルダをエクスプローラで見てみてください。

PHPプログラム実行前には無かった「091-1.txt」というファイルができていま
す。


さらに、メモ帳を使って、「091-1.txt」の中身を見てみると、ちゃんとPHPプ
ログラム中に記述してある文章が書き込まれています。


ウ〜ン、これはなかなか便利な引数だと思いませんか?。


次に、以下のようPHPプログラムを作成してみます。

----------------------------------------------------------
<?php
$file = fopen("C:\\inetpub\\wwwroot\\php\\091-1.txt","w");

fwrite($file,"私の実年齢は25歳です。");

fclose($file);
?>
----------------------------------------------------------

このPHPプログラムを「091-2.php」の名前で、「C:\inetpub\wwwroot\php」フ
ォルダに保存します。


そして、ブラウザのアドレス欄に「http://localhost/php/091-1.php」と入力
してください。

そうすると、これも、上と同様、画面上では何も変化が現れませんが、


同じフォルダにある、「091-1.txt」の中身を見てみると、「091-2.php」の中
で記述する文書に置き換わっています。


すなわち、引数「w」を用いて、異なる文書をテキストファイルに書き込むと、
もとの文書に上書きされて保存されてしまいます。

これは、前回お話した引数「r+」と同じ働きをします。

でも、やはり、書き込む文書ファイルを予め用意していなくても良いのが、何
といっても便利です。



■読み込みもできる引数「w+」

今までお話してきた、プログラムで使用してきた引数「w」は書き込み専用で
したが、それに読み込みもできる機能をつけたのが、引数「w+」です。

正直言いますと、イロイロ手を尽くして探してもみたのですが、あまり良い例
が見つからず、この程度の説明でご容赦ください。

もし、何かプログラム中で使用する場合には、機能の広い「w+」の方が無難で
はないかと思います。


新しく「パソコン(PC)初心者向け パソコンサポートサービス」を始めました。
詳細は専用サイトを御覧ください。

上記の内容はシリーズとしてメールマガジンで配信しています。

42歳のオヤジでもできた!パソコンサーバー化計画 (マガジンID:0000114576)

メールマガジン登録  メールアドレス:
メールマガジン解除  メールアドレス:

Powered by まぐまぐ

copyright(c) 2002-2007 E&A工房 All rights reserved.