如何使用PHP Switch使用多种数字

时间:2015-09-05 22:11:22

标签: php switch-statement

我在PHP中有一个随机数,范围从1到100.

$var = rand (1,100);

我很难切换所有100个。

switch($var) {
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
case 11:
case 12:
case 13:
case 14:
case 15:
case 16:
case 17:
case 18:
case 19:
case 20:
case 21:
case 22:
case 23:
case 24:
case 25:
case 26:
case 27:
case 28:
case 29:
case 30:
case 31:
case 32:
case 33:
case 34:
case 35:
case 36:
case 37:
case 38:
case 39:
case 40:
case 41:
case 42:
case 43:
case 44:
case 45:
case 46:
case 47:
case 48:
case 49:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
case 58:
case 59:
case 60:
case 61:
case 62:
case 63:
case 64:
case 65:
case 66:
case 67:
case 68:
case 69:
case 70:
case 71:
case 72:
case 73:
case 74:
case 75:
case 76:
case 77:
case 78:
case 79:
case 80:
case 81:
case 82:
case 83:
case 84:
case 85:
    echo '<p style="text-align:center;font-family: \'Oswald\', sans-serif;">You unboxed a common!</p>';
    echo '<img src="common.jpg" width=300 height=300 style="display:block;margin-left:auto;margin-right:auto;"/>';
    echo '<p style="text-align:center;font-family: \'Titillium Web\', sans-serif;">Your random number was  '.'<span style="color:red">'.$var.'<span>'.'</p>';
    break;
case 86:
case 87:
case 88:
case 89:
case 90:
case 91:
case 92:
case 93:
case 94:
case 95:
    echo '<p style="text-align:center;font-family: \'Oswald\', sans-serif;">You unboxed a Rare!</p>';
    echo '<img src="rare.jpg" width=300 height=300 style="display:block;margin-left:auto;margin-right:auto;"/>';
    echo '<p style="text-align:center;font-family: \'Titillium Web\', sans-serif;">Your random number was  '.'<span style="color:red">'.$var.'<span>'.'</p>';
    break;
case 96:
case 97:
case 98:
case 99:
case 100:
    echo '<p style="text-align:center;font-family: \'Oswald\', sans-serif;">You unboxed a Extraordinary!</p>';
    echo '<img src="extra.jpg" width=300 height=300 style="display:block;margin-left:auto;margin-right:auto;"/>';
    echo '<p style="text-align:center;font-family: \'Titillium Web\', sans-serif;">Your random number was '.'<span style="color:red">'.$var.'<span>'.'</p>';

};

事情是,我希望它的范围从1到1000.我很确定有更好的方法来使用范围切换而不是像我一样。

是否有类似的东西:

case ($var > 50):
    echo "Something like this";
    break;

我很确定这不起作用但应该有不同的方法吗?

2 个答案:

答案 0 :(得分:1)

将这些放入数组并通过索引引用它们可能更方便:

VIP

除了能够最大限度地提高代码的可读性之外,还可以简化扩展,并打开多个数据源的大门来填充阵列。

答案 1 :(得分:1)

很遗憾,对于开关/案例构造,不支持这样的范围。无论您在case之后放置什么,都必须评估与switch中的表达式相同的值。

对于您的用例,只需使用if / else语句就足够了:

if (x <= 85) {
   // do something
} else if (x <= 95) {
   // do something else
} else if ...

编辑:看起来这个值似乎不一定要在我上面声明的意义上匹配(看起来表达式评估为真或与提供的值匹配就足够了......?)。但是,我的回答仍然是curtis1000发布的答案是对开关/案例的非常不直观的使用;这绝对是if / else的工作。