PHPのelseif構文とin_array関数を利用した条件分岐の使い方を解説
PHPでは、複数の条件を判定する際に、if
とelseif
を使うことで処理を柔軟に制御できます。
特に、配列内に特定の要素が存在するかチェックする場合、in_array()
との組み合わせが役立ちます。
本記事では、こうした構文を活用し実践的なコード例を通して、分かりやすく解説します。
PHPのif/elseif構文の基本
PHPにおける条件分岐は、プログラムの流れを制御するために非常に重要です。
ここでは、if文の基本的なルールや条件式の構築方法、そしてelseif文を利用した複数条件の判定方法について説明します。
if文の基本ルール
if文は、与えられた条件が真(true)である場合にのみ特定の処理を実行します。
条件が偽(false)の場合は、その処理はスキップされます。
単一条件の記述方法
単一条件を用いる場合、if文の書式はシンプルです。
例えば、変数の値が特定の値と一致するかを確認する場合は、以下のように記述します。
<?php
// 変数valueが10と等しいかを確認する
$value = 10;
if ($value === 10) {
// 条件が真の場合の処理
echo "valueは10です。";
}
?>
valueは10です。
この例では、変数$value
が10と一致する場合に、対応するメッセージが表示されます。
条件式の組み立て方
条件式は論理演算子&&
, ||
, !
を使用して複数の条件を組み合わせることが可能です。
例えば、ある数値が5以上かつ20以下かを確認する場合は以下のように記述します。
<?php
// 変数numberが5以上かつ20以下かを確認する
$number = 15;
if ($number >= 5 && $number <= 20) {
echo "numberは5以上かつ20以下です。";
}
?>
numberは5以上かつ20以下です。
ここでは、$number
が5以上であり同時に20以下である場合のみ、メッセージが表示される仕組みになっています。
elseif文の活用
単一のif文ではなく複数の条件を順次判定する場合、elseif
文を利用することで、適切な条件に応じた処理を実行できます。
複数条件判定の書き方
複数の条件を連続して評価する際は、if
文に続けてelseif
文を追加します。
それぞれの条件が順番に評価され、最初に真と判定された条件の処理が実行されます。
例えば、数値の範囲によってメッセージを変える場合は以下のように記述できます。
<?php
// 変数scoreの値に応じたメッセージを出力する
$score = 75;
if ($score >= 90) {
echo "素晴らしい点数です!";
} elseif ($score >= 75) {
echo "とても良い点数です。";
} elseif ($score >= 60) {
echo "合格です。";
}
?>
とても良い点数です。
この例では、最初の条件が偽の場合に次の条件が評価され、最初に該当する条件の処理が実行されるため、$score
が75以上の場合は2番目のメッセージが出力されます。
elseとの組み合わせ
else
文を追加すると、全ての条件が偽の場合にデフォルトの処理を実行できます。
以下は、全ての条件に該当しない場合の処理例です。
<?php
// 変数temperatureの値に応じたメッセージを出力する
$temperature = 5;
if ($temperature >= 30) {
echo "とても暑い日です。";
} elseif ($temperature >= 15) {
echo "快適な気温です。";
} else {
echo "少し寒い日です。";
}
?>
少し寒い日です。
ここでは、どの条件にも一致しない場合、else
の処理が実行されるため、寒い日のメッセージが表示されます。
配列内要素チェックとin_arrayの利用
配列内に特定の要素が存在するかどうかを確認するためには、in_array
関数が有用です。
ここでは、in_array
の基本的な使い方や、その判定結果の扱い方について解説します。
in_array関数の基本
in_array
関数は、指定した値が配列内に含まれているかどうかをチェックするために使用されます。
基本構文と引数の説明
in_array
の基本構文は以下のようになります。
in_array($needle, $haystack, $strict);
$needle
:検索する値$haystack
:検索対象となる配列$strict
(オプション):型の比較を厳密に行うかどうかを指定するブール値(デフォルトはfalse
)
例えば、以下のコードは、文字列"apple"
が配列に存在するかどうかを確認する例です。
<?php
// 果物のリストを定義する
$fruits = ["apple", "banana", "orange"];
// "apple"が$fruits配列内に存在するかをチェックする
if (in_array("apple", $fruits)) {
echo "appleはリストに含まれています。";
}
?>
appleはリストに含まれています。
この場合、in_array
は真(true)を返すため、該当するメッセージが表示されます。
判定結果の取り扱い
in_array
関数は、指定した値が配列内に存在する場合はtrue
、存在しない場合はfalse
を返します。
そのため、返り値に応じた処理を実施することで、存在確認に基づく制御が可能となります。
以下は、存在しない場合の処理も含めた例です。
<?php
// 数値のリストを定義する
$numbers = [1, 2, 3, 4, 5];
// 7が$numbers配列内に存在するかをチェックする
if (in_array(7, $numbers)) {
echo "7はリストに存在します。";
} else {
echo "7はリストに存在しません。";
}
?>
7はリストに存在しません。
このように、in_array
関数を利用することで、配列内要素の存在確認が直感的に行えます。
if/elseif文との組み合わせ例
in_array
関数は、if文やelseif文と組み合わせることで、より柔軟な条件分岐が可能となります。
シンプルな実践ケース
基本的な例として、配列内に特定の文字列が存在するかどうかを確認し、その結果に応じたメッセージを出力する場合を考えます。
<?php
// 色のリストを定義する
$colors = ["red", "green", "blue"];
// "green" が$colors配列に含まれるかどうかをチェックする
if (in_array("green", $colors)) {
echo "greenは配列に含まれています。";
} elseif (in_array("yellow", $colors)) {
echo "yellowは配列に含まれています。";
}
?>
greenは配列に含まれています。
この例では、最初に"green"
が確認されるため、その処理が実行されます。
複雑な条件を扱う応用例
複数の配列要素を別々の条件で評価する場合、if/elseif文とin_array
関数を組み合わせることで、柔軟なロジックを構築できます。
以下は、複数の要素が異なる配列に含まれているかチェックし、結果に応じた処理を実行する例です。
<?php
// ユーザーのアクセス権限リストを定義する
$userRoles = ["editor", "contributor"];
// 管理者であるかチェックする
if (in_array("admin", $userRoles, true)) {
echo "管理者として認証されています。";
} elseif (in_array("editor", $userRoles, true)) {
echo "編集者として認証されています。";
} elseif (in_array("contributor", $userRoles, true)) {
echo "投稿者として認証されています。";
} else {
echo "アクセス権限がありません。";
}
?>
編集者として認証されています。
このコードでは、厳密な比較モード$strict
にtrue
を有効にして、誤った型変換による誤判定を防いでいます。
条件が上から順に評価され、最初に当てはまった場合の処理が実行されるため、ユーザーの役割に応じた対応が可能です。
まとめ
この記事ではPHPのif/elseif構文およびin_array関数を利用して条件分岐の基本と応用例を説明しました。
各構文の記述方法や組み合わせ方を具体的なサンプルコードで理解しやすく示しました。
ぜひ実際にコードを書いて試してみてください。