【问题标题】:php multiple if conditionsphp多个if条件
【发布时间】:2011-06-16 04:12:50
【问题描述】:

当我尝试过滤所有这些参数时,php 只输入第一个 if 条件,忽略所有其他条件。

if($t_red<0){
    $t_red=0;
}

else if($t_red>256){
    $t_red=255;
}

else if($t_green<0){
    $t_red=0;
}

else if($t_green>256){
    $t_red=255;
}

if($t_blue<0){
    $t_red=0;
}

if($t_blue>256){
    $t_red=255;
}

if($t_red<0){
    $t_red=0;
}

【问题讨论】:

  • 问题似乎是什么?
  • else 语句仅在 if 为 false 时运行。另外,为什么每个if 都有$t_red=
  • $t_red、$t_green 和 $t_blue 的值是多少?也许你应该对其中一些条件进行分组

标签: php if-statement conditional-statements


【解决方案1】:
if($t_red < 0)
{
    $t_red = 0;
}
else if($t_red > 255) //Original won't catch it if it is == to 256, have to do either >= 256 or > 255
{
    $t_red = 255;
}

if($t_green < 0)
{
    $t_green = 0;
}
else if($t_green > 255)
{
    $t_green = 255;
}

if($t_blue < 0)
{
    $t_blue = 0;
}
else if($t_blue > 255)
{
    $t_blue = 255;
}

虽然 Andrew Sledge 的答案是最好的,但我确实更正了这样一个事实,即如果 == 为 256,它会错过更正值,这不会被 $var &gt; 256 捕获,因此会出错如果值必须在 0 到 255 之间。

【讨论】:

    【解决方案2】:

    if(或后续的 else if)语句的成功满足条件将忽略紧随其后的所有 else if/else 语句,但之后的 if 语句正在执行 - 您可以通过向每个语句添加 echo 语句来验证这一点。可能是因为您所有的变量分配都是针对 $t_red 的,所以没有对 $t_green 或 $t_blue 执行任何操作?

    【讨论】:

      【解决方案3】:

      如果通过过滤功能运行可能最适合。

      function setParam($param) {
        if($param < 0) {
          $param = 0;
        } elseif($param > 256) {
          $param = 255;
        }
      
        return $param;
      }
      
      $t_green = setParam($t_green);
      $t_red = setParam($t_red);
      $t_blue = setParam($t_blue);
      

      如有必要,您也可以使用传递引用。

      【讨论】:

        【解决方案4】:
        $t_red=$t_red<0?0;$t_red;
        $t_red=$t_red>=256?255;$t_red;
        
        
        //are you sure you're modifying t_red here? and not t_green?
        $t_red=$t_green<0?0;$t_red;
        $t_red=$t_green>=256?255;$t_red;
        
        //are you sure you're modifying t_red here? and not t_blue?
        $t_red=$t_blue<0?0;$t_red;
        $t_red=$t_blue>=256?255;$t_red;
        

        【讨论】:

        • 你的意思是把 : 在几个地方,例如$t_red=$t_red
        【解决方案5】:

        不清楚您要做什么,但我认为您可能希望删除第三个 if 语句之前的 else 并在第六个语句之前添加一个 else if 声明。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-03-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-09-29
          • 2016-01-20
          • 2015-02-07
          相关资源
          最近更新 更多