実践編:PHPプログラムの書き方:PHP4で作るWeb-DBシステム(3)(5/5 ページ)
今回は非常にシンプルなPHPプログラムのサンプルを豊富に掲載した。これにより、HTMLの中に埋め込まれたPHPプログラムがどういうものか、理解できるはずだ。変数、定数、条件分岐、ループなど、PHPプログラムも基本的な構造は普通のプログラム言語と変わりがない。
for、whileなどの反復制御
反復制御を実現するための命令は複数用意されていますが、while文は最初に覚えるのに適切な命令です。
■while文による反復制御
while文は、指定した条件が満たされているあいだ「{}」に囲まれた命令を繰り返し実行します。このため、条件に注意しないと永遠にループする、無限ループにおちいってしまいます(リスト11)。
<html> <body> <?php $i=0; /* これならば10回繰り返して終了する */ while($i<=10){ print $i; $i++; } /* これでは無限ループに陥ってしまう */ while($i<=10){ print $i; } ?> </body> </html>
無限ループにおちいってしまうとプログラムは終了しなくなるだけで、エラーが発生するわけではありません。注意しているつもりでも、うっかりミスで無限ループさせることはよくあります。ここでもやはり、あらかじめプログラムをしっかりと設計して、1つ1つ動作を確かめるようにすることが重要です。
さて、while文に続いて知っていただきたいのが、do..while文です。見ての通り、条件が最後にきていることが、do..while文の特徴です。このように、処理を実行してから条件を判断する反復制御を、後判定反復制御といいます。
この場合、処理を実行してから条件を判断しますから、条件を満たしていなかったとしても、一度は必ず処理が実行されるのです。これに対し、先ほどのwhile文では、処理が一度も実行されない可能性があります。処理の内容に応じて、while文とdo..while文を、適切に使い分けてください。
■決められた回数処理するfor文
最後に紹介するfor文は、決められた回数だけ処理を実行する場合に使います(図5)。式Aは、値の初期化など、最初に実行(評価)する命令を記述します。式Bは繰り返しの開始時に評価される条件を、式Cは繰り返しの最後に実行する命令を記述します(リスト12)。
<html> <body> <?php for($i=1; $i<=10; $i++){ 処理A; } /* このような記述も可能 */ for ($i = 1; $i <= 10; print $i, $i++) ; ?> </body> </html>
for文に記述する式は、どれも省略可能です。値の初期化が不要な場合や、のちほど説明するように脱出条件が不要な場合には、これらを省略して記述します。ただし、その場合にも、区切りを示す「;」だけは必要です。
このほか、PHP4からはforeach文もサポートされています。foreach文は、理解が簡単ではありませんが、配列を処理するには便利な命令です。単純に配列の先頭要素から、終端要素まで繰り返し処理を行うのであれば、foreach文が最も便利です。
ところで、ここまででご紹介した反復制御命令は、回数が決まっている場合などの単純な条件にしか対応できません。ほとんどの場合は、これでも不足はありませんが、時として複雑な条件を使いたいこともあるでしょう。そうした場合に便利なのが、break命令とcontinue命令です。
break命令は、反復制御の最中に実行すると、無条件に反復を終了する命令です。通常の条件とは別に、特別な条件をif文で記述して、反復を終了させるなどの使い方が考えられます。また、反復する条件が複雑な場合には、while文やfor文の条件を設けない方法も考えられます(リスト13)。
<html> <body> <?php $i=0; for(;;){ if($i==10){ break; else 処理A; $i++; } } ?> </body> </html>
もう1つのcontinue文は、反復の途中でその回を終了し、反復の先頭に戻して次の回を実行する命令です。この命令がないと処理が実現できないような場面はあまり考えられませんが、時と場合に応じて上手に使っていただければいいでしょう。ちなみに、break命令とcontinue命令は、ここまでにご紹介したすべての反復制御命令に使用できます。
また、break命令とcontinue命令は、レベルを指定することも可能です。レベルとは、反復制御がネストしている場合に、命令を実行する範囲を指します。反復制御のネストと、レベル指定の例は、リスト14をご参照ください。
<html> <body> <?php $i = 0; while(++$i) { switch($i) { case 5: echo "5<br>\n"; break 1; /* switch文のみ終了する */ case 10: echo "10; quit<br>\n"; break 2; /* switch・while文両方終了する */ default: break; } } ?> </body> </html>
制御構造についての説明は以上ですが、先ほどのセクションと同じく、ここでも最低限の内容だけを紹介しました。PHPでは、このほかにもさまざまな演算子を使って複雑な処理を実現できます。より深くPHPを理解したい方は、マニュアルを入手して熟読することをおすすめします。
■まとめ
今回はここまでとしますが、PHPでのプログラミングについて、理解していただけたでしょうか。思ったよりも簡単で、拍子抜けしたのではないかな、と思います。次回は、今回の知識を応用して、PHPで用意されている関数を使ってみます。PHPで用意されている関数を使うと、より高度な処理を行えるようになり、システムの幅がぐっと広がってきます。
次回も楽しみにしていただければ幸いです。
著者紹介
一志達也(ichishi@pochi.tis.co.jp)
株式会社東洋情報システム
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 特集:オブジェクト指向に生まれ変わるPHP5[前編]
現在開発中のPHP5は、オブジェクト指向機能が大幅に強化される。次世代PHPはどのような言語になるのか? - 特集:Windows開発者に贈る Kylixの全貌
注目の開発環境「Borland Kylix」がいよいよ見えてきた。ここに、英語版の発売を目前に控えたKylixの機能やアーキテクチャを紹介しよう - 特集:Kylixプログラミング作法
GUIの構築やコンポーネントとコードの関係、 Object Pascalの仕様など。 これらの点を、実際に日本語ベータ版でプログラミングしながら分かりやすく解説 - 連載:PHP4で作るWeb-DBシステム(全5回)
PHPはWebサーバとデータベースを結びつけるものだ。そのためPHPでの開発を開始するには、OS、データベース、Webサーバ、そしてPHPと、多くのソフトウェアのインストールを行う必要がある - 連載:ステップ・バイ・ステップ・シェルスクリプト(全7回)
Linuxの中でシェルスクリプトはネットワークの設定、デーモンの起動など重要な役割を果たしている。この連載では、シェルスクリプトで実用的なプログラムを組むことを目標にして、シェルの基本的な知識を説明する - 連載:Kylix 3とDB2で作るWebサービス・アプリ(全5回)
Kylix 3とDB2 V8.1を使って、Webサービス・アプリを作ってみよう。トライアル版も用意されているので、実際に試しながら読んでほしい - プログラミング関連記事一覧