if(式)
式がtrue
なら最初のくくり
で処理が行われます。
式がtrueでなくて
elseがあればelseくくり
で処理が行われます。
ifのいろいろなパターン
//超基本形
if (式) {
//式 が trueなら処理が行われる
}
//否定形
if (!式) {
//式 が falseなら処理が行われる
}
//if ~ else
if (式) {
//式 が trueなら処理が行われる
} else {
//式 が falseなら処理が行われる
}
//if ~ elseif ~ else
if (式1) {
//式1 が trueなら処理が行われる
} elseif (式2){
//式2 が trueなら処理が行われる
} else {
//式1 と 式2 が true でなかったときに処理が行われる
}
おまけ・よく出る比較演算子(詳しくは公式で)
よく使う比較演算子
//同じか?
if ($a == $b) {
//$a が $bに等しいとき -> true -> 処理が行われる
}
//違っているか?
if ($a != $b) {
//$a が $bに等しくないとき -> true -> 処理が行われる
}
//小さいか?
if ($a < $b) {
//$a が $bより小さいとき -> true -> 処理が行われる
}
//大きいか?
if ($a > $b) {
//$a が $bより大きいとき -> true -> 処理が行われる
}
//小さい若しくは等しいか?
if ($a <= $b) {
//$a が $bより小さいか等しいとき -> true -> 処理が行われる
}
//大きい若しくは等しいか?
if ($a >= $b) {
//$a が $bより大きいか等しいとき -> true -> 処理が行われる
}
使用例
使用例
$a = 5;
$b = 10;
//等しいか?
if ($a == $b) {
echo '$a と $b は等しい';
} else {
echo '$a と $b は等しくない';
}
//-> $a と $b は等しくない
//大きいか?小さいか?
if ($a <= $b) {
echo '$a と $b より小さいか等しい';
} elseif ($a > $b) {
echo '$a は $b より大きい';
}
//-> $a は $b より小さいか等しい
//気をつけないといけないパターン
$res = '';
if ($a == $b) {
echo '$a と $b は等しい';
}
//-> なにも出力されません。
// 式がfalseかつ elseがないので resには何も入りませんでした。
if (式) {
は、式
がtrue
なら最初のくくり
を処理します。
そうでないときにelse
があればelseくくり
を処理します。
ネストの闇の話
深いネストはアンチパターン
if (Aの条件) { //if:A
//Aの条件が通ったとき
if (Bの条件) { //if:B
//Bの条件が通ったとき
if (Cの条件) { //if:C
//Cの条件が通ったとき
} else { //if:C
//Cの条件が通らなかったとき
}
} else { //if:B
//Bの条件が通らなかったとき
}
} else { //if:A
//Aの条件が通らなかったとき
}
ネスト
とは上記のようにifの中
にifが入った
(入れ子)
状態をいいます。
ネストの深い条件分岐
は読むのに時間がかかる
ようになります。
上記のようにネストは3つぐらいに抑えたいですね。
ネストを抑えるために: 一例
ガード節
if (!Aの条件) {
//Aの条件が通らなかったとき
//終了
}
if (!Bの条件) {
//Bの条件が通らなかったとき
//終了
}
if (Cの条件) {
//A、B、Cの条件が通ったとき
}
A、Bの条件
が通らなかったときに終了
としたのは少し乱暴ですが、考え方
として捉えてください。
ネスト
だとAの条件
、Bの条件
を頭のどっかに置いたまま
コードリーディングします。
対してガード節
だと、AとBが通らなかったときは終了している
のでCの条件に集中できる
ので理解しやすくなります。
ここまで読んでいただいてありがとうございます!
初心者の方への一助になれば幸いです。
LGTMお願いします!
ストックのついでにお願いします!
モチベーションがあがります!