Help us understand the problem. What is going on with this article?

【PHP】条件分岐

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

tokutoku393
エンジニア兼テクニカルライター。大学は法学部。Node女学園主催。たまに電気風呂と呼ばれます。PHP/Laravel/Node.js/Milkcocoa/IoT/電子工作
http://toku-log.hatenablog.com/
dotstudio
全ての人がモノづくりを楽しむ世界を目指して活動しています。
https://dotstud.io
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした