PHP超入門 (50)


■「opendir()」関数■

前回、PHPプログラム「105-1.php」を保存したフォルダにある複数のファイル
を一覧表示するプログラム



「105-1.php」
-------------------------------------------
<?php

$dir_file = opendir( './' );

while( $file_name = readdir( $dir_file ) ){
	print "{$file_name}<br>";
}

closedir( $dir_file );

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

を最後に紹介しましたが、今回は、それについてのやや詳しい内容のお話です。

まず初めに、1行目の「$dir_file = opendir( './' )」の部分です。

ここで、新しい関数「opendir()」関数が登場します。

この、「opendir関数」の機能は「指定したディレクトリ(フォルダ)を開く」
というもので、

 open・・・「開く」
 dir→directory・・・ディレクトリ(フォルダ)

という具合に、英語的に説明すると分かり易いんじゃないでしょうか?


今回の場合、「opendir( './' )」と「()」の中に「./」と書いてあります
が、これは、(ホームページなどを作ったことがある人は分かると思いますが)
「105-1.php」を基点として、同じフォルダにあるもの、ということを意味して
います。

例えば、これが「../」となれば、「105-1.php」を基点として、「105-1.php」
がある1つ上のフォルダとなります。

で、結局のところ、「$dir_file = opendir( './' );」という一文で、「105-
1.php」がある同一フォルダのファイルを全て、変数「$dir_file」に代入する
ことになります。

当然のことながら、変数「$dir_file」には、複数の要素が代入されることを憶
えておいてください。



■「readdir()」関数■

次に、4行目のやや複雑な文の中にも新しい関数を使っています。

それが、「readdir()」関数です。

「readdir()」関数の機能は、「()」の中に書かれた変数の中から、ファイル名
だけを、実行する度に、順次呼び出します。

ここでは、最初の行で、「$dir_file = opendir( './' );」と、「105-1.php」
がある同一フォルダのファイルを全て代入した変数「$dir_file」を使い、「r
eaddir( $dir_file )」と書くことにより、「105-1.php」がある同一フォルダ
にあるファイル名を順次呼び出すことになります。


当然、変数「$dir_file」の中に含まれるファイル名は有限個ですから、全て読
み出した後は、「エラー」となります。



■while文■

これは、ず〜〜〜〜〜と以前にこのメルマガでお話した、「while」文を使って
います。

ここで、やや模式的に書くと

 while(条件A){
  処理B
 }

となり、この場合、「条件Aが成り立っている場合は、処理Bを繰り返す」と
いうことになります。


今回の場合、

while( $file_name = readdir( $dir_file ) ){
	print "{$file_name}<br>";
}

となっていますが、上記「条件A」にあたる部分が、

 $file_name = readdir( $dir_file );

と、readdir関数により呼び出されたファイル名を変数「$file_name」に代入し
ます。

で、今回の場合は、「変数「$file_name」にreaddir関数により、ファイル名が
読み込まれる間は」と解釈することになります。


上でも書きましたように、全てのファイル名を読み出した後は、「エラー」と
なるので、このエラーとなった時点で、処理Bは自動的に終了となります。


そして、この処理Bは今回の場合、

 print "{$file_name}<br>;

となり、読み出したファイル名と改行コード("<br>")をブラウザに出力する、
という処理になります。



■closedir()関数■

そして、最後の、「closedir( $dir_file );」です。

ここでも新しい関数、「closedir()」関数が使われています。

この関数の機能は、「指定したディレクトリ(フォルダ)を閉じる」というも
のです。

 close・・・閉じる
 dir→directory・・・ディレクトリ(フォルダ)

という具合に、これも英語的に説明すると分かり易いんじゃないでしょうか?


プログラムの初めに、「$dir_file = opendir( './' )」と、ディレクトリ(フ
ォルダ)を開きましたので、ここでは、お行儀よく、キチンと「開けたものは
閉める」という目的で使用します。


ここで、気を付けるのは、あくまでも「closedir( $dir_file );」と書き、「
closedir( ./ );」ではないことに注意してください。


以上、「105-1.php」というphpプログラム

「105-1.php」
-------------------------------------------
<?php

$dir_file = opendir( './' );

while( $file_name = readdir( $dir_file ) ){
	print "{$file_name}<br>";
}

closedir( $dir_file );

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

の各所についてお話してきましたが、これを実行することにより、「105-1.ph
p」が保存してあるフォルダにあるファイルの一覧がブラウザに表示されること
は、前回、お示しした通りです。


でも、これでは、ファイル名が一覧表示される「のみ」で、あとは何も操作す
ることは出来ません。

ここは、是非とも、表示された各ファイル名にリンクをはって、そのリンクを
クリックすることによりファイルの中身を表示・修正したいものです。

そこで、これについて、これから考えてみたいと思います。


それでは、次回に続く。。。

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

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

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

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

Powered by まぐまぐ

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