この章ではfor文について説明します。
同じような処理を何度も繰り返すプログラムを書く場合、以下のように何度も同じ処理を書くのは面倒ですし、間違いも多くなりがちです。
そこで、何回も同じ処理を繰り返す必要があるときに、for文を使えば簡単に記述することができます。
while文は何回も同じ処理をする必要があるときに必要でしたが、for文もwhile文と同じ働きがあります。
for文の詳しい説明は例の後に行います。 では例をみてみましょう。 forが最初に実行される時にはから始まります。
初期値式とは条件式を判定するときの初めの変数です。
初期値式は上の例で言えばです。
次に初期値式を元に条件式を判定してTRUEであるならば、処理文が実行されることになります。
条件式は上の例で言えばです。
処理文が実行された後に増減式において、初期値を足したり引いたりする行為を行います。
増減式は上の例で言えばです。
プログラムの内容によってはのように減算子の記述もできます。
順を追って説明します。
①初めに$iに初期値1を代入します。
初期値は1でなくても2でも3でも自由に決められます。
②$i<=3の条件式を判定します。
ここがTRUEであるならばを実行します。
$iは1で3以下なので、を実行しを出力します。
③それから$i++で$iに1を足し、$iは2になります。
④そしてまた条件式の判定に入り、上の3で$iは2になりましたが、まだ3以下なのでを実行し、を出力します。
⑤それから$i++で$iに1を足し、$iは3になります。
⑥そしてまた条件式の判定に入り、上の5で$iは3になりましたが、まだ3以下なのでを実行しを出力します。
⑦それから$i++で$iに1を足して4になります
⑧そしてまた条件式の判定に入りますが、$iは1を加えられて4になりましたので、条件式はFALSEになりループを終了します。
投稿者: 無漏路
do-while文を知ろう
この章ではdo-while 文について説明します。
do-while 文はwhile文とほとんど働きが一緒ですが、while文は条件式がFALSEであるならば1度も実行することなく終了してしまいますが、do-while文は必ず1回は処理文を実行します。
そして処理文を実行してから条件式の判定に入ります。 では例をみてみましょう。 順を追って説明します。
①初めに$iに初期値1を代入します。
while文と違って、初めに条件式の判定はないのでを実行して、1を出力します。
そして下の2に進みます。
②「$i++;」の箇所で$iは1を加えられますので2になります。
③そして、この段階になって初めての条件判定に入ります。
$iは$i++で1が足されているので2になっていますが、2はまだ4未満なのでTRUEになります。
④3番はTRUEですので、先頭に戻ってを実行して、2を出力します。
⑤「$i++;」の箇所で$iは1を加えられますので3になります。
⑥そして、の条件判定に入ります。
$iは$i++で1が足されているので3になっていますが、3はまだ4未満なのでTRUEになります
⑦6番はTRUEですので、先頭に戻ってを実行して、3を出力します。
⑧「$i++;」の箇所で$iは1を加えられますので4になります。
⑨そして、の条件判定に入りますが、4はすでに4未満ではないのでFALSEになり、do-while文はここで終了です。
結果は「123」です。
while文を知ろう
この章ではwhile文について説明します。
何回も同じ処理をする必要があるときにwhile文を使えば簡単に記述することができます。
例えば同じような処理を何度も繰り返すプログラムを書く場合、以下のように何度も同じ処理を書くのは面倒ですし、間違いも多くなりがちです。
そこでwhileを使うと簡潔に書くことが出来ます。 while文の基本構文は以下の通りですが、詳しい説明は例の後に行います。 では例をみてみましょう。
初めにwhileが実行される時に条件式がTRUEかFALSEかをチェックします。
TRUEである場合にはwhileの処理文が実行されます。
FALSEである場合には処理文は実行されません。
whileは条件式がTRUEである限り何度でも処理を実行します。
順を追って説明します。
① $iに初期値1を代入します。
while ( $i < 4)の部分の条件式をif文と同じようにTRUEかFALSEで判定します。
1はまだ4未満でTRUEですのでを実行して、を出力します。
FALSEであるならば何も出力されません。
そして次の2に進みます。
②「$i++;」の箇所で$iは1を加えられますので2になります。
③そして、また最初のの部分に戻ります。
上の2番で$iは1を足されているので2になっています。
そしての条件判定に入りますが、2はまだ4未満なのでTRUEになり、を実行し、を出力します。
④「$i++;」の箇所で$iは1を加えられますので3になります。
⑤そして、また最初のwhile ( $i < 4 )の部分に戻ります。
上の4番で$iは1を足されているので3になっています。
そしての条件判定に入りますが、3はまだ4未満なのでTRUEになり、を実行し、を出力します。
⑥「$i++;」の箇所で$iは1を加えられますので4になります。
⑦そして、また最初のの部分に戻ります。
上の6番で$iは1を足されているので4になっています。
そしての条件判定に入りますが、4はすでに4未満ではないのでFALSEになり、while文はここで終了です。 もし、$i++がないとどうなると思いますか?答えは無限ループと言いまして、の条件部分が永遠に4以下にならないので無限に繰り返しを行いますので気を付けてください。
加算子,減算子について知ろう
この章では加算子,減算子について説明します。
加算子は数値を1つ増やし、減算子は数値を1つ減らす演算子です。
加算子は減算子はで表示します。
まだ説明していませんがfor文などの繰り返し構文等に主に使われます。
では例をみてみましょう。
初めに前置加算子から説明します。「++$a」はと同じことを意味しています。
つまりを計算してから、左辺の$aに結果を代入して、echoで出力していますので、の出力結果はになります。
$aはこの時点で9に変化しているので、の結果はになります。
次は後置加算子について説明します
初めに$a に代入されている8をで出力しているので、結果はとなり、その後に$a に1を加えているのではを出力します。
つまり、後置加算子では初めにを無視した状態で出力し、それから$aに1を加算します。
次は前置減算子について説明します。はと同じことを意味しています。
つまりを計算してから、左辺の$aに結果を代入して、echoで出力していますので、の出力結果はになります。
$aはこの時点で7に変化しているので、 の結果はになります。
次は後置減算子について説明します。 初めに$a に代入されている8をで出力しているので、結果はとなり、その後に$a から1を引いているのではになります。
この章ではプログラム内での計算について説明します。
算術演算子とは
「+」「-」「*」「/」「%」
のことを言います。
以下の表を参考にしてください。 「$number1+$number2」は加算を行っているのですが、$number1には5、$number2には3が入っているので、この変数の値同士をで足しています。
特に数値を変数に入れる必要性がないのであればと計算していただいても結構です。
「$number1-$number2」は減算を行っているのですが、$number1には5、$number2には3が入っているので、この変数の値同士をで引いています。
特に数値を変数に入れる必要性がないのであればと計算していただいても結構です。
「$number1*$number2」は乗算を行っているのですが、$number1には5、$number2には3が入っているので、この変数の値同士をで掛けています。
特に数値を変数に入れる必要性がないのであればと計算していただいても結構です。
「$number1/$number2」は除算を行っているのですが、$number1には5、$number2には3が入っているので、この変数の値同士をで割っています。
特に数値を変数に入れる必要性がないのであればと計算していただいても結構です。
「$number1%$number2」は剰余を行っているのですが、$number1には5、$number2には3が入っているので、この変数の値同士の除算の余りを算出します。
特に数値を変数に入れる必要性がないのであればと計算していただいても結構です。
「$number1*$number2+100」は掛け算と足し算を行っているのですが、計算の優先順位が高いのは掛け算です。掛け算を行ってから足し算を行います。
これは算数の計算順序と同じです。足し算から計算したい場合はと、カッコを足し算に付け加えてください。
カッコを付けることで優先順位が掛け算より高くなります。
注意してほしいことが1点あります。
それはのように文字列と計算式を文字列連結演算子でつなげる場合には注意が必要です。
結論から先に言いますとこの例はエラーになります。プログラムは文字列を連結する「.」を小数点と勘違いしてエラーを出しています。
ですのでこの計算式には以下のようにカッコを付けてください。
switchで占いを作ろう
この例はswitch文で分岐して、占いを作成しています。 $numberには0から6までのランダムな数値が入ります。
その数値とcase文を比べて一致しましたら、$resultに結果が入り、その$resultをprint文で出力しています。
は「数値に関する関数を知ろう」で説明しますが、これは関数と言われているものです。
関数については「ユーザー定義関数について知ろう」で詳しく説明します。
ここでは関数について、少し説明します。
PHPの関数の仕組みはエクセルの関数の仕組みと意味は同じです。
エクセルをご存知の方はわかると思いますが、エクセル関数にSUMと言う関数が有りますが、この関数は指定した範囲のデータに基づいて足し算を行う関数です。
例えば指定した範囲のデータが3,5,7であるならば結果は15です。
SUMには初めから指定した範囲の足し算を行うと言う仕組みが備わっています。
つまり、エクセルの内部機構でSUMの機能は指定した範囲の足し算を行うと言うプログラムがされていると言うことです。
これが関数の意味です。
mt_rand関数は乱数を生成するという決められた処理を行い、乱数と言う結果を返します。 この例の場合には最小値が0で、最大値が6なので、0から6までのランダムな数値が$numberに入ります。
switch文を知ろう
この章ではswitch文について説明します。
if文と同じく条件分岐できるのがswitch文です。
「switch (式 )」の中のがと一致するとbreakまでの文が実行されます。
つまり、以下のような動作をします。
「式」の部分が値1と一致すれば、式が値1と同じ時に実行される処理を実行して、値2と一致すれば、式が値2と同じ時に実行される処理を実行して、どれにも当てはまらない時にdefaultの部分の式がいずれの値にも違う時の処理を実行します。
「switch (式 )」の中のとの中の値が一致したときにはbreakでswitch文を抜けることが出来ますが、breakは一連の流れを強制的に中止したい時に使用します。
switch文でbreakを使う場合にはbreakでswitchのブロックを抜けます。
また、の部分は整数、浮動小数点、文字列を使うことが出来ます。
switch はifと似た働きがあるので比べてみましょう。
if文もswitch文も$aの値が2の時にecho文が実行されます。
if文の場合は以下の箇所で一致します。
switch文の場合は以下の箇所で一致します。
結果はどちらもです。
次はbreak文が記述されてなかった場合にどうなるのかを説明します。
では例をみてみましょう。
「式」の値がcaseの値に一致した場合、breakの箇所まで処理を実行していきますと説明しましたが、breakが無いと、次のbreakか もしくはbreak がどこにもない場合にはdefaultの箇所まで処理が実行されてしまいます。
上の例で説明しますとbreakがあるならば$aが2なので、の箇所のを実行して処理が終わるはずのところ、breakが無いと、そこで止まらず下に抜けて行ってしまいますので、最後のdefaultまで実行されることになります。
ですので、この例の実行結果はと、なります。
次にcase文を複数設置する方法について説明します。
breakまでの間にcaseを複数設置して、同じ処理を実行させることが出来ます。
では例をみてみましょう。
このケースでは$rainには40が代入されていますので、switch文の中の以下の部分に合致しますので、結果はです。
でもでも結果は同じです。
この章では論理演算子について説明します。
「if文について理解しよう。if文の基本構文1」の箇所で比較演算子について説明しましたが、if文でもっと複雑な条件定義をしたい場合には論理演算子を使用します。
では例をみてみましょう。 論理演算子andを挟んだ両辺にと が配置されていますが、両辺がTRUEの場合のみ条件式がTRUEになります。
つまり
もしくはの片方がFALSEの場合には条件式はTRUEになりません。
これが論理演算子 andの役割です。
結果は「$b==9」がFALSEなので、が出力されます。
次の例をみてみましょう。 andは$aと$bの両辺がTRUEの場合に条件式がTRUEになりましたが、orの場合は$aと$bのどちらかがTRUEの場合に条件式がTRUEになりますので、この例の場合はがFALSEですが、条件式はTRUEになります。
結果は「TRUEです」になります。
次の例をみてみましょう。
上の例はが TRUE,の部分がFALSEなので、全体の条件式はTRUEになりますので、結果はになります。 上の例はとが共にTRUEなので、全体の条件式はFALSEになりますので、結果はになります。
次の例をみてみましょう。 上の例は先ほどのandの箇所で使用した例題にを付けたのですが、「!」を付けることで条件式がTRUEではない場合にif文が実行されます。
結果はになります。
次の例をみてみましょう。
ただ単に変数にが付いているだけですが、これでも条件式としては成り立ちます。
ではこの例の何がTRUEもしくはFALSEになるのかの判断基準を説明します。
FALSEとは
〇整数の0
〇浮動小数点の0.0
〇文字列の〇何も入ってない文字列、
つまりのように変数に何も入ってないカラ文字
〇要素が何も入ってない配列
〇NULL
NULLとは何も変数に入ってない状態を指します。
〇FALSEという文字
ここまでがFALSEです。
それ以外はすべてTRUEです。
例えば変数に中にのようにFALSEの条件以外の値が入っていればTRUEです。
以下の例は$aにが入っているので以下の条件式はTRUEです。 先ほどの以下の例を書き換えてみましょう。 上の例を書き換えると以下のようになります。 は同じ意味です。
条件式であるは$aが FALSEであるならばif文が実行されます。
このように条件式で真偽を調べるときに明示的にFALSE、TRUEを使うことが出来ることを覚えておいてください。
結果は「0はFALSE」なのでが実行されます。
次は論理演算子の優先順位について説明します。
論理演算子には順位がありまして、の方がよりも優先度が高い、つまり、先に実行されるという事です。
また、が並んだ場合には、最初に評価されるのはです。
例を見てみましょう。 論理演算子が2つありますが、最初に評価されるのはandなので、あえて括弧で囲みますと以下のようになります。
orは両辺のどちらかがTRUEであれば条件式がTRUEになりますので、結果はになります。 以下のようにorを中心に評価されるのではないことに注意してください。 では次の例を見てみましょう。この例ではよりの方が優先順位が高いので、あえて括弧で囲みますと以下のようになります。の結びつきが優先されますので以下のような括弧の囲みにはなりません。