php多条如果条件

时间:2011-01-26 21:49:31

标签: php if-statement conditional-statements

当我尝试过滤所有这些参数时,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;
}

5 个答案:

答案 0 :(得分:7)

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

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);

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

答案 1 :(得分:1)

目前尚不清楚您要尝试做什么,但我认为您希望在第三个else语句之前移除if并添加{{ 1}}在第六个else语句之前。

答案 2 :(得分:0)

$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;

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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 > 256不会抓住它,因此如果值必须介于0和255之间,则会出错。