この記事は 一人PHP総復習 Advent Calendar 2016 7日目の記事です!
処理の基本の条件分岐について簡単にまとめてみます( 厂˙ω˙ )厂
PHPは書いた内容を上から順番に処理していきますが、条件分岐を使うと、文字どおり条件によって処理を分岐させることができます。
PHPではif文とswitch文という構文を使います。
if文
書き方
if (条件) {
// 条件がtrueの時実行
} else {
// 条件がfalseの時実行
}
簡単ですね!
また条件を複数判定することも出来ます。
if (条件1) {
// 条件1がtrueの時実行
} else if (条件2) {
// 条件1がfalseで条件2がtrueの時実行
} else {
// 条件1・条件2がfalseの時実行
}
注意したいのは、条件2は「条件1がfalseの時に判定される」という点です。
条件1がtrueだった場合はそこでif文の処理は終了となり、条件2に到達しません。
上から順に優先度の高くなるよう処理を記述します。
注意点
ありがちなミスとして、ifである条件の時だけ宣言した変数を、その後の処理で扱おうとするケースです。
<?php
if ($score >= 60) {
$result = 'success!';
}
echo $result;
上記の場合、$score
が60以上の場合は通常どおり処理されますが、59以下だった場合$result
が存在せずエラーとなってしまいます。
if自体がtrueかfalseを判定するため、下記は同様の意味になります。
if ($result === true) { ・・・ }
if ($result) { ・・・ }
ただし、==
を使うと厳密な型一致にならないので、特別な理由のない限り使わないほうが良いです。
switch文
書き方
<?php
switch (対象) {
case 条件:
・・・
break;
case 条件:
・・・
break;
default:
・・・
}
注意点
switch文の大きな特徴は、==
で比較を行うという点です。厳密な型比較ではありません。
<?php
$age = '18'; // string
if ($age === 18) {
$result1 = true;
} else {
$result1 = false;
}
switch ($age) {
case 18:
$result2 = true;
break;
default:
$result2 = false;
}
echo $result1; // false;
echo $result2; // true;
if文では===
を使用して厳密な型比較をしているのでfalse
、switch文では文字列の'18'
をint型に変換して比較するのでtrue
が返ります。
まとめ
複数の条件が固定値として決まってる場合はswitch文のほうがスッキリするような。(拡張子の判定とか?)
比較の特性などに注意しつつ使い分けていきましょう!