php使用开关不间断;

mma*_*ota 4 php

我的开关怎么了?现在结果:

< 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 < 121true,所以比较发生的99==truetrue根据http://docs.php.net/language.types.type-juggling(开关执行松散比较,而不是像===那样严格).因此,执行第一个案例块.
并且由于你没有break语句,它会进入下一个case块和下一个case等等......
意思是:无论你是否使用,这都无法正常工作break.


Tur*_*tle 8

您似乎不了解交换机的工作原理.你想要的是一系列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)


Raj*_*Raj 5

仅当您要将变量与一组值进行比较时才使用开关.

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语句.

上面的块是错误的用法.有时这些表达中不止一个是真的.