switch
次の二つの例は、同じことを二つの異なった方法で書いたものです。
一つは、 例1 上の例の出力は以下となります。 iは1に等しい iは1に等しい
失敗を避けるために 上の例の出力は以下となります。 iは1に等しい iは2に等しい
ここで、$iが0に等しい場合は、PHPは全ての echo
文を出力してしまいます!
$iが1の場合、PHPは最後の二つの echo 文を出力します。
$iが2に等しい場合のみ、'期待した'動作をし、
'iは2に等しい'と表示します。
このため (ある種の状況下では、BREAKを付加することを避けたいと
思うかもしれませんが)、
caseに付随する文は、空とすることが可能です。 この場合、次のcaseに付随する文に制御が移行します。 上の例の出力は以下となります。 iは3より小さいですが負ではありません
上の例の出力は以下となります。 iは0,1,2に等しくない
どの case に与える値は、式であっても構いません。 しかし、式はそれ自体が実行され、 その結果が switch に与えた値と緩やかに比較されます。 これは、switch に与える値の複雑な評価には使えないということです。 たとえば、以下の例を見てみましょう: 上の例の出力は以下となります。 B
もっと複雑な比較を行うには、
上の例の出力は以下となります。 B switch文の制御構造に関する別の構文がサポートされています。 詳細は、 制御構造に関する別の構文を参照ください。 上の例の出力は以下となります。 iは1に等しい case の最後はコロンではなくセミコロンとすることもできますが、 PHP 8.5.0 以降、この構文は非推奨です。 上の例の出力は以下となります。 Deprecated: Case statements followed by a semicolon (;) are deprecated, use a colon (:) instead in script on line 6 Deprecated: Case statements followed by a semicolon (;) are deprecated, use a colon (:) instead in script on line 7 Deprecated: Case statements followed by a semicolon (;) are deprecated, use a colon (:) instead in script on line 8 Deprecated: Case statements followed by a semicolon (;) are deprecated, use a colon (:) instead in script on line 11 ほかのを選んでみませんか? 警告
この機能は PHP 8.5.0 で 非推奨 になります。この機能に頼らないことを強く推奨します。 変更履歴
|