PR

(注:記事は執筆時の情報に基づいており,現在では異なる場合があります)

表2●PHPの主な演算子
リスト6●if文を使った三つのコード
リスト1●HTMLタグの中に記述したPHPスクリプト
リスト7●switch ~ case文を使用例
リスト8●while文、do ~ while文、for文を使ったコード
図4●リスト8を実行した結果

ポイント5
加算/減算子は変数の前後で意味が違う

 ここでPHPで扱う演算子について整理しておきましょう(表2[拡大表示])。算術演算子は見ての通り,四則演算を行うためのものです。比較演算子は,主に変数の値を比較するために使うもので,値と型を同時に比較する演算子===と!==は,PHP4から追加されたものです。

 論理演算子でよく使うのはand,or,!の三つでしょう。排他的論理和(xor)は,a xor bと書いたとき,a,bのどちらか一方だけが真の場合に真になります。&&はandと,||はorとそれぞれ同じですが,複数個の演算子を並べた場合に,and,orより演算子の優先度が高いという違いがあります。

 間違えやすいのが加算子++と減算子--です。この二つの演算子は,変数に前置するか(前置演算子),後置するか(後置演算子)によって演算のタイミングが異なるのです。例えば,

$a=1;
print($a++);
print(++$a);
と書いたとき,最初のprint文では1が,次のprint文では3が出力されます。後置では$aを返した後,1を加算しますが,前置では1を加算した後,$aを返すからです。

ポイント6
PHPの制御文とHTMLタグは入れ子にできる

 制御文は,プログラムの分岐や繰り返しをコントロールします。分岐には,if文とswitch文があります。行こうかやめようか判断する時や,道が二またに分かれているような時はif文を,たくさんに道が分かれている時はswitch文を使います。

 まずはif文の使い方を見てみましょう。リスト6[拡大表示]の(a)は,最も単純なif文のサンプルです。変数$signalの値がblueなら,if文の( )の中が真(TRUE)となって,{ }の中の処理を行います。カッコや中カッコの後ろに,;(セミコロン)が必要ない点に注意してください。

 (b)はif ~ elseの例です。$yajirushiの値がleftでなければ,「右へ」という文字列を出力します。

 この二つだけならC言語とほとんど同じですが,PHPならではの表記が(c)です。これは(a)とまったく同じ処理です。PHPスクリプトはリスト1[拡大表示]で紹介したようにHTMLタグと一緒に記述できるので,HTMLタグを入れ子にすることが可能なのです。ただし注意してほしいことが二つ。最初のif文の終端に,:(コロン)がある点と,if文の終わりであることを示すために,最後にendifを付ける点です。endifの終端が;(セミコロン)になっている点も気をつけてください。

 次はswitch文です。リスト7[拡大表示]は,変数$tokeiの値によって処理が分岐していることがわかりますね。default文は,該当する値がない場合に実行させたい処理を記述します。ポイントは,それぞれのcaseの終端がコロンで終わること,そしてcase処理の内部に必ずbreak文を記述することです。break文がないと,case処理は順番に実行されます。例えば$tokeiの値が「ね」だった場合,「0時の方向へ」「3時の方向へ」…とすべての処理を実行してしまいます。

 if文,switch文の分岐処理に対して,同じ処理を何度も行うのがwhile文,do ~ while文,for文の三つの繰り返し制御文です。ざっくり言いますと,条件が真の場合に処理を繰り返すのがwhile文,while文によく似ているものの,一回やってみてから条件を確かめるのがおっちょこちょいがdo ~ while文。律義に指定した回数繰り返すのがfor文です。

 リスト8[拡大表示]は,(1)while文,(2)for文,(3)do ~ while文を使ったサンプルで,実行すると図4のようになります。注意すべきなのは(3)です。do ~ while文は後判断なので最低1回はdo以下の処理を実行します。したがってこの例では,$jの値が10以上であってもdo ~ while構文ではprint以降の処理が一度だけ実行されるというわけです。


金宏和實(Kanehiro Kazumi)

■著者紹介 金宏和實(かねひろ・かずみ)氏

株式会社イーザー代表取締役副社長。富山県高岡市在住。


(次回に続く)