我需要解决下面的问题。我不确定,你能提出更好的方法吗?
switch(true){
case $price>100:
tooHigh();
break;
case (($price<=100) && ($price>70)):
negotiate();
break;
case (($price<=70) && ($price>20)):
accept();
break;
case ($price<=20):
thankAndEscape();
break;
}
答案 0 :(得分:2)
if($price > 100)
{
//too high
tooHigh()
}
elseif($price > 70) //it wasn't greater than 100 - is it greater than 70?
{
//negotiate
negotiate()
}
elseif($price > 20) //OK, wasn't greater than 70 OR 100 - greater than 20 then?
{
//accept
accept()
}
else //Guess not - just don't do anything
{
//thank and escape
thankAndEscape()
}
不幸的是,案例陈述不能做条件。他们真的是“如果是这样的话......那么残酷的诚实”
这应该有效,因为条件会直到下一个直到达到底部。如果一个匹配 - 声明的其余部分被忽略......那就是我的逻辑是正确的......
我认为您不需要进行范围匹配,因为它已经是if语句的原生匹配。例如。在70分钟和20分之间的陈述在分离的条件下简化为低于70的20以上。更有效,更容易阅读。
答案 1 :(得分:2)
if ($price <= 20) {
thankAndEscape();
} elseif ($price <= 70) {
accept();
} elseif ($price <= 100) {
negotiate();
} else {
tooHigh();
}
尝试并发布结果/您的印象(感谢有关表演的信息:)
干杯!
答案 2 :(得分:1)
if ($price>100)
{
tooHigh();
}
elseif($price<=100) && ($price>70))
{
negotiate();
}
elseif(($price<=70) && ($price>20))
{
accept();
}
elseif ($price<=20)
{
thankAndEscape();
}
看起来更紧凑和可读,不是吗?
答案 3 :(得分:-3)
使用do-while。
do {
if($price > 100) { tooHigh(); break; }
} while(false);