入門!初心者向けプログラミング講座【PHP編】#6 『条件分岐処理 if 文』
漫画坊主です。
第6回 入門!初心者向けプログラミング講座 始めたいと思います。
第1回目はこちら 入門!初心者向けプログラミング講座【PHP編】#1『PHPとは』
前回 入門!初心者向けプログラミング講座【PHP編】#5 『変数と定数』
今回【PHP編】#6 はプログラミングをする上で必要な『条件分岐処理 if 文』について勉強したいと思います。
※本編に移る前に注意
私の使用しているパソコンの OS が Windows10 ですので、
スクリーンショットがWindows10 となっております。予めご了承くださいませ。
本編でテキストエディタのスクリーンショットを使用しておりますが
こちらは【Sublime Text 3】を使用しております。
テキストエディタはご自身が使いやすいもので問題ありません。
もしテキストエディタを インストールしていない方 がいましたら下記からインストールできます。
それでは本編開始です!
◆目次
・条件分岐
- 【 if 文 】
- 【 if – else 文 】
- 【 if – else if – else 文 】
・論理演算子
・まとめ
◆条件分岐
今回はif文(条件分岐)について勉強したいと思います。
if文とはズバリ【条件分岐】です。
例えばAとBという分岐があります。
条件分岐は、ある一定の条件を満たしているとAという分岐の処理を行い、
満たしていない場合はBと分岐の処理を行う。
という具合に条件によって通るルートが変わります。
分かりやすく、ゲームの世界で表現すると、
王様が勇者に「勇者の剣を手に入れてくるのじゃ!」とお願いをします。
ここで勇者の剣を所持していなければこのまま会話が終わります。
では勇者の剣を所持している場合はどうなるでしょうか?
王様が勇者に「勇者の剣を手に入れてくるのじゃ!」とお願いします。
そこで勇者の剣を手に入れたことを報告します。
すると王様は「それは勇者の剣!早速魔王を倒してくれ!」とお願いをします。
これが条件分岐です。
よく、「フラグが立った」って言いますよね?
今回の場合は勇者の剣を手に入れたことによってフラグが立ったので、
フラグが立った時の処理を行います。
【 if 文 】
では実際にプログラミングで条件分岐を記述していきましょう。
こちらのソースをご覧ください。
<?php $flag = false; echo "王様:勇者の剣を手に入れてくるのじゃ!"; //勇者の剣を所持しているかをチェック if($flag == true){ echo "王様:それは勇者の剣!早速魔王を倒してくれ!"; } ?>
このソースを見てみると【true】【false】という文字が出てきました。
この【true】【false】は論理値または真偽値と呼ばれるもので
【false】が偽(フラグが立っていない)状態を表しています。
続いて、条件分岐のif文を見ていきましょう。
if文の記述方法は
. フラグが立った時の処理
}
となります。
このソースで解説をすると、まず変数に【false】を代入します。
この変数でフラグの管理を行います。現在はフラグが立っていない状態です。
続いて王様にセリフ「勇者の剣を手に入れてくるのじゃ!」を言わせます。
そこで条件分岐で勇者の剣を所持しているかを判断します。
現段階ではフラグが立っていないのでif文の中の処理は実行されません。
では変数の中身を【true】にします。
先程と同じく王様がセリフ「勇者の剣を手に入れてくるのじゃ!」と話した後に
条件分岐で勇者の剣を所持しているかを判断します。
今回は勇者の剣を所持している、つまりフラグが立っている状態なので
条件分岐の中の処理が実行され、王様は「それは勇者の剣!早速魔王を倒してくれ!」と話します。
実際の出力結果はこうなります。
では【true】【false】以外の条件でif文を使ってみましょう。
まずはこちらのソースをご覧ください。
<?php //年齢を変数に格納 $age = 20; echo "私の年齢は".$age."歳です。"; echo $age."歳なのでお酒が飲めます。"; ?>
このソースは変数に年齢を格納し、文章を表示しています。
今回は「20」を代入しているので、文章的には問題ありません。
では、変数に「15」を代入した場合はどうでしょうか?
<?php //年齢を変数に格納 $age = 15; echo "私の年齢は".$age."歳です。"; echo $age."歳なのでお酒が飲めます。"; ?>
「15歳なのでお酒が飲めます。」という文章的におかしいですよね?
ここで先程のif文(条件分岐)を使用します。
ではこちらのソースをご覧ください。
<?php //年齢を変数に格納 $age = 15; echo "私の年齢は".$age."歳です。"; //もし年齢が20歳以上の場合は下記の文を出力 if($age >= 20){ echo $age."歳なのでお酒が飲めます。"; } ?>
みなさんは数学でこの記号「>=」に見覚えはありませんか?
これは比較演算子と呼ばれるもので、条件分岐でよく使用する演算子です。
比較演算子にはたくさん種類があるので表にまとめました。
今回のソースで解説をすると、
まずは変数に年齢を代入します。
その後に年齢を文章で表示。
条件分岐を用意し、20歳以上であれば「〇歳なのでお酒が飲めます。」と出力させます。
20歳未満であれば「〇歳なのでお酒が飲めます。」を出力させません。
【 if – else 文 】
では今度は20歳未満の場合の条件分岐を作ってみましょう。
こちらのソースをご覧ください。
<?php //年齢を変数に格納 $age = 20; echo "私の年齢は".$age."歳です。"; //もし年齢が20歳以上の場合は下記の文を出力 if($age >= 20){ echo $age."歳なのでお酒が飲めます。"; //年齢が20歳以上でない場合は下記の文を出力 }else{ echo $age."歳なのでお酒が飲めません。"; } ?>
先程のif文にelseという記述が追加されました。
これを【if – else 文】といいます。
if-else文の記述方法は
. フラグが立った時の処理
} else {
. フラグが立っていない時の処理
}
となります。
先程は20歳以上であれば「〇歳なのでお酒が飲めます。」と出力させ、
20歳未満であれば「〇歳なのでお酒が飲めます。」を出力させませんでしたが、
今回は20歳未満であれば「〇歳なのでお酒が飲めません。」と出力させます。
【 if – else if – else 文 】
このif文はさらに条件を追加することができます。
こちらのソースをご覧ください。
<?php //年齢を変数に格納 $age = 20; //もし年齢が21歳以上の場合は下記の文を出力 if($age > 20){ echo $age."歳なので成人です。"; //年齢が20歳の場合は下記の文を出力 }else if($age == 20){ echo "今年で".$age."歳なので成人です。"; //年齢が20歳以下の場合は下記の文を出力 }else{ echo $age."歳なので未成年です。"; } ?>
先程のif-else文にelse ifの記述が追加されました。
記述方法はこのようになります。
if ( 条件式 ) {
. フラグが立った時の処理
} else if(条件式){
. 1つ目のフラグが立っていないかつ、2つ目のフラグが立っている時の処理
} else {
. フラグがどちらも立っていない時の処理
}
ここで注意していただきたいのが、
プログラムは上から順番に実行されるということです。
例えば優先度の高い分岐をelse ifに記述してしまうと
優先度の低い分岐がifで実行されてしまいます。
なので優先度の高いものから順に分岐を記述するように心掛けましょう。
ちなみに余談ですが、
. フラグが立った時の処理
} else if( 条件式 ){
. 1つ目のフラグが立っていないかつ、2つ目のフラグが立っている時の処理
}else if( 条件式 ){
. 1つ目、2つ目のフラグが立っていないかつ、3つ目のフラグが立っている時の処理
} else {
. フラグがどちらも立っていない時の処理
}
というようにelse if を追加していくと条件分岐を増やすことができます。
◆論理演算子
最後に論理演算子について勉強していきましょう。
論理演算子とは「否定」(NOT)、「論理積」(AND)、「論理和」(OR)の3種類のことです。
これらを表にまとめたものがこちら。
では実際にプログラムをで論理演算子を使ってみましょ
「否定」(NOT)には「!」を使用します。
この「!」マークはプログラムでは否定を意味しています。
実際にソースで確認してみましょう。
<?php $str = '不一致'; //文字が一致していなければ「true」になる if($str != '一致'){ echo "「一致」以外の文字です。"; }else{ echo "この文字は「一致」です。"; } ?>
このソースを解説すると、まず変数に「不一致」という文字を代入します。
そして条件分岐で変数の値が「一致」という文字と一致していなければ
「「一致」以外の文字です。」と出力します。
もし変数の値が「一致」の場合はelseの処理を通って、
「この文字は「一致」です。」と出力します。
「論理積」(AND)には「&&」を使用します。
「論理和」(OR)には「||」を使用します。※backspaceの左のキー
実際にソースを確認してみましょう。
<?php $str = '不一致'; $flag = true; //文字が一致 かつ flag が true の場合 if($str == '一致' && $flag){ echo "両方条件を満たしています。"; //文字が一致 または flag が true の場合 }else if($str == '一致' || $flag){ echo "片方条件を満たしています。"; //どちらも条件を満たしていない場合 }else{ echo "条件を満たしていません"; } ?>
このソースを解説すると、
まず1つ目の変数に文字を代入。
2つ目の変数に論理値を代入。
条件分岐で1つ目の変数の文字が「一致」かつ「true」であるかを判定する。
どちらも一致していれば処理を実行。
一致していなければ次の分岐へ進む。
次の分岐では条件分岐で1つ目の変数の文字が「一致」または「true」であるかを判定する。
どちらかが一致していれば処理を実行。
どちらも一致していなければ次の分岐へ進む。
最後の分岐ではどちらも一致していなければ処理を実行する。
では実際の出力結果を確認してみましょう。
ちゃんとパターンに応じた分岐になっているのが分かります。
◆まとめ
・【true】【false】は論理値または真偽値と呼ばれるもので【true】が真【false】が偽
・if – else if – else の条件分岐を書くときにelse ifを増やすと分岐も増える。
・条件式には比較演算子、論理演算子を使用する。
以上で 入門!プログラミング講座【PHP編】#6『条件分岐処理 if 文』を終了したいと思います。
次回は『rループ処理』について詳しく勉強しましょう!
最後まで読んで頂きありがとうございました!
◆良かったら息抜きに私の描いた漫画も読んでみて下さい!
漫画坊主の漫画はこちらから
◆プログラミングの勉強を続ける場合はこちらから!
プログラミングの勉強はこちらから