こんにちは。もんたです。
前回はPHPの出力echoについての記事でしたね。
本日もプログラミング学んでいきます。引き続きPHPの修行ですね。はい。
今回は条件分岐となるPHPのif文についてアウトプットしていきます。
初心者は毎日が勉強なので楽しいですね。
頻繁に使うことが多いみたいなのでプログラミング初心者でもしっかり覚えておきたいところです。
それでは早速、今回学んだif文について書いていきます。
if文とは?
さて、if文とはどういったものなのでしょうか。
if文は、プログラム上で条件分岐をする際に使用するもので、プログラムの真偽を判定してその処理を行うかどうかを決められる。
真の場合はTrue、偽の場合はFalseとなり、ifの条件式に記述している条件がTrueとなれば処理が実行されて、Falseとなれば実行されない。
ifを使えば、「この箱に○○が入っていたらAの処理、○○が入っていればBの処理、これらに当てはまる物がなければCの処理をする」といった風に、条件によって違った処理をすることもできる。
では、どのように書けば良いのでしょうか。
if文の書き方
まずはif文の書き方について。
if(条件式){
処理;
}
「条件式」の部分に処理を行う条件を書き、「処理」の部分に条件式が当てはまった際の処理を書く。
if文はこのようにして書くが、これを自分がしたい処理を当てはめて書くと以下のように書くことができる。
$name = "もんた";
$age =26;
if($age < 30){
echo "{$name}は30歳未満です";
}
この出力結果は以下。
もんたは30歳未満です
if文の条件式
if文の条件式の書き方は色々あるが、簡単な例を記述。
右側にはコメントアウトとして、どういった意味の条件式なのか記載しています。
($age == 30) //変数ageが30だったら
($age != 30) //変数ageが30以外だったら
($age <= 30) //変数ageが30以内だったら
($age < 30) //変数ageが30未満だったら
($name == "もんた") //変数nameがもんただったら
($name != "もんた") //変数nameがもんた以外だったら
こういったように、比較演算子などを使ってif文の()内に条件式を記述することによって、条件分岐することができる。
更に条件を付けたい場合はelseif
条件を複数にしたい場合は、このelseifを用いることで複数の条件を付け加えられる。
elseifも同様に、()内に付け足したい条件を条件式として記述する。
以下がその記述例。
$name = "もん吉";
$age = 36;
if($age >= 100){
echo "{$name}は100歳以上です"; //変数ageが100以上なら実行
}elseif($age >= 50){
echo "{$name}は50歳以上です"; //変数ageが50以上なら実行
}elseif($age >= 30){
echo "{$name}は30歳以上です"; //変数ageが30以上なら実行
}
さて、この条件の出力結果はどうなるだろうか。
ちなみにプログラムは上から順に実行されてい行く。
まずは一つ目の($age >= 100)という条件式だが、これは上部の変数定義を見ても分かる通り、変数ageは36なので100よりは大きくない。
よってFalse(偽)となるため、中の処理は実行されない。
次に二つ目の($age >= 50)という条件式でも、36は50以下なのでFalse(偽)。実行されない。
そして三つ目の($age >= 30)はどうだろうか。
この条件式は「変数ageが30以上だったら」という条件式になっており、$ageの値36はもちろん30以上となる。
よってこの条件式はTrue(真)となり、elseifの中の処理が実行される。
//出力結果 もん吉は30歳以上です
このようにプログラムは上から順に巡ってくるが、if,elseifの条件式が当てはまればその中の処理が実行されるようになっている。
では、上記のどの条件式にも当てはまらなかった時の処理は、どのように記述すれば良いのだろうか。
条件式以外の処理がelse
全ての条件式がFalse(偽)で当てはまらない場合の処理を記述する際は、elseを用いる。
記述例は以下。
$name = "もん子";
$age = 21;
if($age >= 100){
echo "{$name}は100歳以上です"; //変数ageが100以上なら実行
}elseif($age >= 50){
echo "{$name}は50歳以上です"; //変数ageが50以上なら実行
}elseif($age >= 30){
echo "{$name}は30歳以上です"; //変数ageが30以上なら実行
}else{
echo "{$name}はとても若いです"; //それ以外なら実行
}
変数の値を変えて記述しましたが、変数ageの値は20なのでif,elseifの条件式には当てはまりません。
このような場合はelseを使うと、「それ以外だったら実行」という条件になりelse内の処理が実行される。
上記の例だと以下の出力結果になる。
もん子はとても若いです
尚、elseに関しては条件式が必要ないので、()は使わないことに注意。
if文はif文中でも書ける
そしてif文は、if文中でも使用することができる。
記述例は以下。
$name = "もん子";
$age = 21;
if($age >= 30){
echo "{$name}は30歳以上です"; //変数ageが30以上なら実行
}elseif($age >=20){
if($age < 25){
echo "{$name}は20歳以上、25歳未満です"; //変数ageが25未満なら実行
}else{
echo "{$name}は25歳以上、30歳未満です"; //それ以外なら実行
}
}
このように、if文の中に更にif文を記述することによって、より複雑な条件を指定することができる。
上記の例では、まず一つ目のif条件は($age >= 30)なのでFalse(偽)となり、実行されない。
次に二つ目のelseifの条件では($age >= 20)なので、これはTrue(真)となりelseifの中の処理が実行される。
そのelseifの中にはif文があるので、引き続き同じようにプログラムが真偽を判定。
その一つ目のif文の条件式は、($age < 25)なのでTrue(真)となり、ここでまた中の処理が実行され、ようやくechoで出力される。
よって上記のif文の出力結果は以下のようになるはず。
//出力結果 もん子は20歳以上、25歳未満です
条件式が複数Trueでも1番最初の処理だけ実行される
if文で条件式が複数当てはまるようなことがあった場合はどうなるのか。
$name = "もんサブロー";
$age = 105;
if($age >= 100){
echo "{$name}は100歳以上です"; //変数ageが100以上なら実行
}elseif($age >= 50){
echo "{$name}は50歳以上です"; //変数ageが50以上なら実行
}
上記の例では、一つ目の条件式が($age >= 100)でTrue(真)。
そして二つ目の条件式も($age >= 50)でTrue(真)。
このように、条件式が複数True(真)の場合はどちらとも処理が実行されそうだが、実際はプログラムは上から順に巡ってくるので、1番最初にTrue(真)になった条件式の処理だけが実行される。
よって上記の出力結果は以下のようになる。
もんサブローは100歳以上です
プログラミング初心者には少しややこしいが注意。
まとめ
はい。今回も無事に終えることができましたが、まだコード書いてるだけで疲れてしまう。笑
慣れるまで何年かかるか分からないけど、頑張ってアウトプット継続していきたいと思います。
今回は条件分岐のif文について学びましたが、条件分岐は他にもいろんな書き方があるのでそこら辺はまた記事にしていきたいと思います。
というわけで、頑張ってif文使いこなそう。。。笑
最後までご覧頂きまして、ありがとうございました。