今回はPHPの条件式です。プログラミングカテゴリーで記事にした比較演算子や論理演算子を使用して、条件ごとに処理を分けることができます。

PHPの条件式(if文)

3年以上前に更新されました。情報が古い可能性があります。
更新日 : 2018年06月05日

今回はPHPの条件式です。プログラミングカテゴリーで記事にした比較演算子論理演算子を使用して、条件ごとに処理を分けることができます。

条件式の書式(if文)

PHPの条件式の書式は一般的な書き方に沿っています。

以下がその書式です。

if(比較演算子や論理演算子などの式) {
	()内の式がTRUEとなるときにこの部分が実行
}

丸括弧の中に比較演算子や論理演算子の組み合わせを書きます。要は丸括弧の中の結果がトータルでTRUEまたはFALSEになるように書いていきます。

そして丸括弧ないの条件を精査して、TRUEだった場合に中括弧{}の中の処理が実行されます。

逆にFALSEだった場合には処理は行われません。

他にも条件式の書式がありますが、コード例を見てみましょう。

コード例

実際にPHPのコードで条件式の書式をいくつか見てみます。

<?php

$x = 10;

// 単純な条件式
if($x === 10) {
	echo "10ですよ!";
	echo "<br>";
}

// elseを使用して条件に当てはまらなかった場合の処理を記述
if($x === 6) {
	echo "6ですよ!";
} else {
	echo "6ではありません!";
}
echo "<br>";

// else ifを利用して当てはまらなかった場合の別の条件式を記述
if($x === 0) {
	echo "xは0です!";
} else if($x % 2 === 0) {
	echo "xは偶数です!";
} else {
	echo "xは奇数です!";
}

?>

別の書式が2つほどありますがそれほど変わりはありません。

elseを使用すると、ifelse ifの条件に当てはまらなかった場合の処理を記述することができます。どの条件にも当てはまらなかった場合に使用する構文なので条件式の最後に使用します。

else ifは、最初のifの条件に当てはまらなかった場合にelse ifの条件で再度精査され、その条件に当てはまれば、else if内の処理が実行されます。

以下がコードの実行結果です。

条件式の実行結果
条件式の実行結果

else ifに関しては1つの条件式の中に複数書くこともできます。

極端な例ですが、以下のコードをご覧ください。

<?php

$x = 5;

// else ifを利用して当てはまらなかった場合の別の条件式を記述
if($x === 0) {
	echo "xは0です!";
} else if($x % 2 === 0) {
	echo "xは偶数です!";
} else if($x % 3 === 0) {
	echo "xは3で割り切れます!";
} else if($x % 4 === 0) {
	echo "xは4で割り切れます!";
} else {
	echo "xは0ではなく、偶数でもなく3でも4でも割り切れない数です!";
}

?>

このように記述することも可能です。こちらのコードの実行結果は以下です。

複数の条件式の実行結果
複数の条件式の実行結果

条件式の注意点

直前のコードでは複数の条件式を組み合わせて実行しました。$xが5の際には最後のelseの処理が実行されました。

では少し編集した以下のコードの結果を予想してみてください。

<?php

$x = 0;

if($x % 2 === 0) {
	echo "xは偶数です!";
} else if($x === 0) {
	echo "xは0です!";
} else {
	echo "xは0ではなく、偶数でもない数です!";
}

?>

最初に$xを0としてスタートします。2番目の条件echo "xは0です!" が実行されるのが理想的な処理の流れですが、これを実行すると以下のようになります。

失敗した条件式
失敗した条件式

最初のifの条件が実行されてしまいます。もちろん0は偶数でもあるので問題はありませんが(笑)

このように条件式は上から順番に精査されます。そのため条件式を複数書く際には細かい条件を先に精査させるように書きましょう。

特別な条件式(三項演算子)

最後にちょっと特殊な条件式を見てみます。

三項演算子という条件を短縮して書くことのできる方法です。以下にコードを記載します。

<?php

$x = 0;

/*
	if($x === 0) {
		echo "xは0です!<br>";
	} else {
		echo "xは0ではありません!<br>";
	}
 */
echo ($x === 0) ? "xは0です!<br>" : "xは0ではありません!<br>";

/*
	if($x !== 0) {
		$string = "xは0以外です!";
	} else {
		$string = "xは0です!";
	}
 */
$string = ($x !== 0) ? "xは0以外です!" : "xは0です!";

echo $string;

?>

書式は条件式 ? TRUEのときの値 : FALSEの時の値となります。

1つ目の処理では値を直接echoで実行させて、2つ目では値を$stringに代入しています。

これらの処理はコメントアウトに記述したものと同様の動作をします。

以下が実行結果になります。

三項演算子実行結果
三項演算子実行結果

このようにコードをぐっと減らすことができるので単純な条件式などの際にはおすすめです。

まとめ

今回はPHPの条件式について書きました。PHPの条件式は一般的なプログラミングの条件式の書式に沿っているので、こちらの書き方に慣れておけば他の言語でも同様に条件式を記述できることが多いです。

三項演算子まで行いましたが、if文をメインに利用していくことになると思うので、そこまではしっかり理解しておきましょう。