开发者

php multiple if conditions

开发者 https://www.devze.com 2023-02-07 10:19 出处:网络
when i try to filter all these parameters php only enters in the first if conditions, ignoring all others conditions.

when i try to filter all these parameters php only enters in the first if conditions, ignoring all others conditions.

if($t_red<0){
    开发者_C百科$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;
}


Probably best suited if ran through a filtering function.

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

You could also use pass-by-reference if necessary.


It's not clear what you're trying to do, but I think that you would want to remove the else before the third if statement and add an else before the sixth if statement.


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


a successfully met condition of an if (or following else if) statement will ignore all else if/else statements that immediately follow it, but the if statements afterwards are executing - You can verify this by adding echo statement to each one . Could it perhaps be because all your variable assignments are for $t_red so no action is taken on $t_green or $t_blue?


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's answer is the best though, but I did correct the fact that it would miss correcting the value if it was == to 256, which wouldn't be caught by just $var > 256, and thus would be in error if the value has to be between 0 and 255.

0

精彩评论

暂无评论...
验证码 换一张
取 消