LoginSignup
4

More than 5 years have passed since last update.

この記事は 一人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文のほうがスッキリするような。(拡張子の判定とか?)
比較の特性などに注意しつつ使い分けていきましょう!

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4