if文は、指定した条件が真(true)である場合にだけ、特定のコードを実行する構文です。PHPでif文を使いこなすには、以下の事柄を理解しておく必要があります。
if文の基本的な書き方
if文の基本的な書き方は、以下のとおりです。
PHP
if (条件) {
// 条件が真の場合に実行する処理
}
条件には、bool型の真偽値や、値の大小、値の一致、関数の実行結果など、さまざまな条件を指定することができます。
例えば、以下のコードは、変数 $a の値が 10 より大きい場合に、メッセージを表示するコードです。
PHP
$a = 12;
if ($a > 10) {
echo "10より大きいです。";
}
elseif文とelse文
if文の条件が真でない場合、elseif文やelse文を使用して、別の条件で分岐することができます。
PHP
// 条件1が真の場合に実行する処理
} elseif (条件2) {
// 条件1が偽で、条件2が真の場合に実行する処理
} else {
// 条件1と条件2が偽の場合に実行する処理
}
例えば、以下のコードは、変数 $a の値が 10 より大きい場合、10 より小さい場合、それ以外の場合で、それぞれメッセージを表示するコードです。
PHP
$a = 12;
if ($a > 10) {
echo "10より大きいです。";
} elseif ($a < 10) {
echo "10より小さいです。";
} else {
echo "10です。";
}
短縮構文
if文は、以下の短縮構文で記述することもできます。
PHP
$a = 12;
echo $a > 10 ? "10より大きいです。" : "10以下です。";
この短縮構文では、条件式の後に ? を置き、真の場合の処理を : の左側に、偽の場合の処理を : の右側に記述します。
演算子
if文で使用できる演算子は、以下のとおりです。
演算子 | 意味 |
---|---|
== | 等しい |
!= | 等しくない |
< | より小さい |
<= | 以下 |
> | より大きい |
>= | 以上 |
&& | 論理積(AND) |
\ | \ |
! | 論理否定(NOT) |
条件式の評価順序
if文の条件式は、以下の順序で評価されます。
- 論理積(&&、||)
- 比較演算子(==、!=、<、<=、>、>=)
- 論理否定(!)
条件式の注意点
if文の条件式で、変数や関数の結果を評価する場合は、必ず「===」または「!==`」演算子を使用して、型も一致するようにしてください。
例えば、以下のコードは、変数 $a の値が 10 より大きい場合に、メッセージを表示するコードです。
PHP
$a = "12";
if ($a > 10) {
echo "10より大きいです。";
}
このコードでは、変数 $a の値は文字列型ですが、条件式では数値型と比較しています。そのため、このコードはエラーになります。
正しいコードは、以下のとおりです。
PHP
$a = "12";
if ($a === 12) {
echo "10より大きいです。";
}
このコードでは、条件式で「===」演算子を使用して、変数 $a の値と 10 の型も一致するようにしています。そのため、このコードは正常に動作します。
条件式の種類
if文の条件式には、以下のようなものがあります。
- 真偽値(true、false)
- 比較演算子(==、!=、<、<=、>、>=)
- 論理演算子(&&、||、!)
- 関数の実行結果(関数の戻り値が bool型である場合)
以下に、それぞれの条件式の使用例を示します。
真偽値
PHP
$a = 12;
if (true) {
echo "条件式は真です。";
}
比較演算子
PHP
$a = 12;
if ($a > 10) {
echo "aは10より大きいです。";
}
論理演算子
PHP
$a = 12;
$b = 20;
if ($a > 10 && $b < 30) {
echo "aは10より大きく、bは30より小さいです。";
}
関数の実行結果
PHP
function isEven($n) {
return $n % 2 === 0;
}
$n = 12;
if (isEven($n)) {
echo "nは偶数です。";
}
ネストされたif文のスクリプト
以下のスクリプトは、変数 $a の値が 10 より大きい場合、10 より小さい場合、それ以外の場合で、それぞれメッセージを表示するスクリプトです。
PHP
$a = 12;
if ($a > 10) {
echo "10より大きいです。";
} else if ($a < 10) {
echo "10より小さいです。";
} else {
echo "10です。";
}
このスクリプトでは、if文とelseif文、else文を使用して、3つの条件分岐を実現しています。