Jes*_*alk 34 php switch-statement
所以我有四个条件需要经历,我认为最好switch在PHP中使用该语句.但是,我需要检查一个整数是否小于或等于,或大于等于.
switch ($count) {
case 20:
$priority = 'low';
break;
case 40:
$priority = 'medium';
break;
case 60:
$priority = 'high';
break;
case 80:
$priority = 'severe';
break;
}
Run Code Online (Sandbox Code Playgroud)
随着if()语句看起来会像下面这样:
if ($count <= 20) {
$priority = 'low';
}
if ($count <= 40) {
$priority = 'medium';
}
Run Code Online (Sandbox Code Playgroud)
这有可能switch-case吗?
Kon*_*ess 122
解决此问题的更一般情况是:
switch (true) {
case $count <= 20:
$priority = 'low';
break;
case $count <= 40:
$priority = 'medium';
break;
case $count <= 60:
$priority = 'high';
break;
default:
$priority = 'severe';
break;
}
Run Code Online (Sandbox Code Playgroud)
开关不能这样做,但在这种特殊情况下,您可以执行以下操作:
switch ((int)(($count - 1) / 20)) {
case 0:
$priority = 'low';
break;
case 1:
$priority = 'medium';
break;
case 2:
$priority = 'high';
break;
case 3:
$priority = 'severe';
break;
}
Run Code Online (Sandbox Code Playgroud)
因此,在(int)(($count - 1) / 20)所有值中,从 0 到 20 将 eval 为 0,21 到 40 将 eval 为 1,依此类推,允许您为此目的使用 switch 语句。
由于我们正在连接值,我们甚至可以简化为一个数组:
$priorities = ['low', 'medium', 'high', 'severe'];
$priority = $priorities[(int)(($count - 1) / 20)];
Run Code Online (Sandbox Code Playgroud)
小智 5
有一种方法可以在 PHP 7 中使用三元赋值运算符。运算符是在 (5.4?) 上较早引入的,但我从未在其他版本上测试过代码。我在那里写了整个 switch 代码,但是为了简洁起见,这里只是特定的条款。假设我们希望条件匹配所有大于或等于 5 的数字:
switch($value){
case ($value >= 5 ? $value : !$value): // Do something here
break;
}
Run Code Online (Sandbox Code Playgroud)
我们要么允许 $value 不变地传递,要么根据条件否定该值。$value 将始终与自身匹配或无法通过其否定的测试。