这是switch语句。只有当变量$thumbs_number
小于-1(例如-2、-3、-4等(时,才应输出类bad
。
但现在,当$thumbs_number
为0时,类bad
也在输出(-1和1具有正确的类:average
(。
<div class="topic-like-count
<?php // Apply style based on number of votes
switch ($thumbs_number) {
case ($thumbs_number < -1): echo ' bad'; break;
case ($thumbs_number == 0):
case ($thumbs_number == 1): echo ' average'; break;
case ($thumbs_number == 2):
case ($thumbs_number == 3): echo ' good'; break;
case ($thumbs_number == 4):
case ($thumbs_number == 5): echo ' great'; break;
case ($thumbs_number == 6):
case ($thumbs_number == 7): echo ' excellent'; break;
case ($thumbs_number > 7): echo ' brilliant'; break;
}
?>
">
发生了什么?
您滥用了switch
语句。
每个case
语句将表达式的结果与传递给switch
的值进行比较。因此,在这里您将$thumbs_number
与($thumbs_number < -1)
的结果进行比较,即true
或false
。
改为:
switch ($thumbs_number) {
case 0:
case 1:
echo "average";
break;
case 2:
case 3:
echo "good";
break;
....
default:
if ($thumbs_number <= -1) echo "bad";
else if ($thumbs_number > 7) echo "brillant";
}
我遇到了类似的问题,我不愿意写一个长的if-else-if块。为了寻找答案,我来到了这一页。
有了这种技术,你所需要做的就是更换
switch ($thumbs_number)
带有
switch (true)
这是我的代码版本: