我的开关怎么了?现在结果:
< more
> less
= equality
!= no't equality
Run Code Online (Sandbox Code Playgroud)
应该是:
< more
= equality
<?php
$page = 99;
switch ($page)
{
case $page < 121:
echo '< more <br/>';
case $page > 123:
echo '> less <br/>';
case $page == 99:
echo '= equality <br/>';
case $page != 99:
echo '!= no\'t equality <br/>';
}
?>
Run Code Online (Sandbox Code Playgroud)
Vol*_*erK 13
在switch语句中,您将数字与布尔值进行比较.
我们假设第一种情况$page < 121是true,所以比较发生的99==true是true根据http://docs.php.net/language.types.type-juggling(开关执行松散比较,而不是像===那样严格).因此,执行第一个案例块.
并且由于你没有break语句,它会进入下一个case块和下一个case等等......
意思是:无论你是否使用,这都无法正常工作break.
您似乎不了解交换机的工作原理.你想要的是一系列if语句,即
if ($page < 121)
echo '< more <br/>';
if ($page > 123)
echo '> less <br/>';
if ($page == 99)
echo '= equality <br/>';
if ($page != 99)
echo '!= no\'t equality <br/>';
Run Code Online (Sandbox Code Playgroud)
仅当您要将变量与一组值进行比较时才使用开关.
switch ($variable)
{
case "me":
echo "variable is me";
break;
case "you":
echo "variable is you";
break;
default:
echo "Variable is neither of us";
}
Run Code Online (Sandbox Code Playgroud)
上面的开关盒块可以写成如下所示:
if ($variable=="me")
{
echo "variable is me";
}
elseif ($variable=="you")
{
echo "variable is you";
}
else
{
echo "variable is neither of us";
}
Run Code Online (Sandbox Code Playgroud)
不要在case语句附近放置表达式.
switch ($somethng)
{
case $something < 10:
break;
case $something > 20:
break;
}
Run Code Online (Sandbox Code Playgroud)
Switch仅用于将变量与一组值进行比较.只要!对于其他所有内容,请使用if ... elseif..else语句.
上面的块是错误的用法.有时这些表达中不止一个是真的.