[PHP-users 16172]Re: case文での比較演算子について

A.K.I. aki @ tetsuneko.com
2003年 6月 24日 (火) 14:39:26 JST


http://www.php.net/manual/ja/control-structures.switch.php

なんと日本語マニュアルのページのswitchのところににちゃんとif
との比較まで載ってます。当然このあたりは見た上での質問なのだ
ろうとは思うのですが、念のため。

正しく答えるなら

>switchのcase条件として、比較演算子を使用するのは不適切なのでしょうか?

この質問に対する答えは「caseは条件を書くモノではなく値を書くモノ
です。条件式の結果のtrue、falseがcaseの値として使われます」
という感じでしょうか。

>グラフを作成するためのy軸目盛をデータのmax値($x)をチェックして設定する構文で
>す。
>switch ($x) {
>  case ($x <= 20):
>    $kura_memori = 1;
>    break;
>  case ($x <= 100):
>    $kura_memori = 5;
>    break;
>  default:
>    $kura_memori = 1000;
>}
>
>$xに0が入ってきた場合に、無視されて、default:が実行されてしまうのですが、こ
>れは使用なのでしょうか?
これに関しては「無視されていません。$xの値が($x<=20)の値とも($x<=100)
の値とも異なるのでdefaultが処理されます」
といったところでしょうか。
ちなみにfalseは0、trueは0以外ということを併せて考えると、な
ぜ「$xに0が入ってきた場合に」といった条件が発生するのか理解
しやすいかな、と。

>if文ではちゃんと分岐してくれるのですが。

これは、同じ動きをすると思っているif文を示して頂けないと判断
できません。





PHP-users メーリングリストの案内