アプリ版:「スタンプのみでお礼する」機能のリリースについて

例えば$numという変数の値が50以下の場合、
51以上80以下の場合、81以上の場合の処理と分けたい場合、
switch()文でif()のように値の大小比較をする事は出来ないのでしょうか?
以下のような比較を行いたいです。
(以下は例なので、if()で良いだろうという突っ込みは要りません)
switch ($num) {
case <= 50:
処理1
case <= 80:
処理2
default:
処理3
}

A 回答 (5件)

こういうことでしょうか?


<?
switch ( TRUE) {
case ( $num<= 50):
処理1;
break;
case ( $num<= 80):
処理2;
break;
default:
処理3;
}
?>
    • good
    • 2
この回答へのお礼

出来ました^^
上記処理で思い通りの動作をしてくれないと思っていたのですが、
勘違いだったようです。

ありがとうございました。

お礼日時:2006/04/04 13:15

switch (true) {


case $num <= 50:
echo "50以下";
break;
case 51<$num && $num <=80:
echo "51以上80以下";
break;
default:
echo "80以上";
}
    • good
    • 1

がると申します。


元々switch文は経緯的に「単値(1つの値)しか受け取らない」ことが多いので。
範囲指定で確認したい場合は、原則的にはif else の連打にならざるを得ないかと思います。
後は#1さんの書かれている通り「なんらかの計算式で単値におきなおせる」ならおきなおしてしまうのもまた一つの手です。
    • good
    • 1

> case 0: // 51以下


50以下です.申し訳ない… 
    • good
    • 0

PHPはよく知らないので,見当違いな可能性あり.



振り分けの単位が倍数になっていれば,単純なのだが….
倍数になっているなら, 振り分け単位で 除算してfloorをとる,つまり整数除算した商を用いればいい.

$base = 50;
$quotient = floor($num/($base+1))
switch(#quotient) {
case 0: // 51以下
break;
case 1: // 51~100
break;
default: // 101以上
break;
}

ただし,この方法だと, $num が負の場合に問題がある.

# switch に入れる判定値を if () で初期化するっていうのは2度手間なでけですね.
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A