More than 1 year has 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文のほうがスッキリするような。(拡張子の判定とか?)

比較の特性などに注意しつつ使い分けていきましょう!