array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ja', ), 'this' => array ( 0 => 'control-structures.elseif.php', 1 => 'elseif/else if', ), 'up' => array ( 0 => 'language.control-structures.php', 1 => '制御構造', ), 'prev' => array ( 0 => 'control-structures.else.php', 1 => 'else', ), 'next' => array ( 0 => 'control-structures.alternative-syntax.php', 1 => '制御構造に関する別の構文', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ja', 'path' => 'language/control-structures/elseif.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4, PHP 5, PHP 7, PHP 8)
elseif
は、その名前から分かるように、if
とelse
の組み合わせです。elseif
は、
else
のように、元のif
式の値が
false
の場合に別の文を実行するようにif
文を拡張します。
しかし、else
とは異なり、elseif
式が
true
の場合にのみ代わりの式を実行します。
例えば、次のコードは、aはbより大きい、
aはbに等しい、
aはbより小さいを出力します。
<?php
if ($a > $b) {
echo "aはbより大きい";
} elseif ($a == $b) {
echo "aはbと等しい";
} else {
echo "aはbより小さい";
}
?>
複数の elseif
を同じ if
文の中で使用することができます。
true
と評価された最初の elseif
式を実行します。PHP では、(単語二つで)'else if'と書くこともできます。
動作は(一単語の) 'elseif'と同じです。文法的な意味はやや異なっています
(あなたが C 言語に詳しいとすると、C 言語のそれと同じ動作です)。
しかし、最終的な両者の動作は全く同じです。
elseif
文は、前にある全ての if
文と
elseif
の値が false
であり、
現在の elseif
式の値が true
である場合にのみ実行されます。
注意: 上の例のように波括弧を使用する限り、
elseif
とelse if
はまったく同じだと考えてよいことに注意しましょう。コロンを使ってif
/elseif
条件を指定する場合は、 一単語で指定する必要があります。つまり、else if
のように分割してはいけません。 分割すると、パースエラーとなってしまいます。
<?php
/* 間違った方法 */
if ($a > $b):
echo $a." is greater than ".$b;
else if ($a == $b): // コンパイル不能
echo "The above line causes a parse error.";
endif;
/* 正しい方法 */
if ($a > $b):
echo $a." is greater than ".$b;
elseif ($a == $b): // 二つの単語を分割せず組み合わせていることに注目
echo $a." equals ".$b;
else:
echo $a." is neither greater than or equal to ".$b;
endif;
?>