PHP中断连续如果语句

时间:2012-07-12 21:49:16

标签: php

我有一大组if语句,当其中一个为真时,则不需要测试以下if语句。

我不知道最好的办法是什么。

我应该创建一个函数,开关还是while循环?

每个连续的if语句都不同,并且预先创建了输入值。我将尝试创建一个简单的例子来尝试更好地解释它。

$total = ($val1+$val2+$val3)/$arbitaryvalue
if($total > 2){//Do Something
}

$total = ($val1+$val2)/$anothervalue
if($total > 2){//Do Something different
}

5 个答案:

答案 0 :(得分:2)

将它们放在前一个if语句的else中,这意味着如果第一个条件的计算结果为false,则唯一的运行。如果你有很多if语句,这会变得很乱,你的问题中的例子是否代表了你的要求的规模?

$total = ($val1+$val2+$val3)/$arbitaryvalue
if($total > 2){//Do Something
}
else
{

    $total = ($val1+$val2)/$anothervalue
        if($total > 2){//Do Something different
    }

}

答案 1 :(得分:1)

if ( condition ) {

}

else if ( another_condition ) {

} 

... 

else if ( another_condition ) {

} 

答案 2 :(得分:0)

决定是否使用循环取决于一个真实的例子。如果有一个模式来设置$ total,那么我们可以使用循环。如果没有,最好只做连续的if语句:

if(($val1+$val2+$val3)/$arbitraryvalue > 2){
   //Do Something
}
else if(($val1+$val2)/$anothervalue > 2)
{
   //Do something different
}

但是,如果$ val1 + $ val2和$ anothervalue部分存在模式,则循环可能是更好的解决方案。在我看来,你的决定也应该取决于模式是否有意义。

答案 3 :(得分:0)

由于使用else不会有益且难以维护,我建议使用一个函数。

函数会更理想,因为您可以在使用return满足条件后随时退出函数。

  

如果在函数内调用,则立即返回语句   结束当前函数的执行,并将其参数作为   函数调用的值。

下面是一个示例函数,其虚拟值设置用于演示目的:

<?php

function checkConditions(){   
    $val1 = 5;
    $val2 = 10;
    $val3 = 8;

    $arbitaryvalue = 5;
    $anothervalue = 4;

    $total = ($val1+$val2+$val3) / $arbitaryvalue;

    if($total > 2){
        return 'condition 1';
    }  

    $total = ($val1+$val2) / $anothervalue;
    if($total > 2){
        return 'condition 2';
    } 

    return 'no conditions met';
}

echo checkConditions();
?>

如果您想执行注释代码中指示的某种类型的操作,则可以在从函数返回之前执行相应的操作。

答案 4 :(得分:0)

Ben Everard所说的是正确的方法,但还有许多其他解决方案:

$conditions = array(
  array(
    'condition' => ($val1+$val2+$val3)/$arbitaryvalue,
    'todo' => 'doSomething',
  ),
  array(
    'condition' => ($val1+$val2)/$arbitaryvalue,
    'todo' => 'doSomethingDifferent',
  ),
  // ...
);

foreach ($conditions as $item)
{
  if ($item['condition'])
  {
    // $item['todo']();
    call_user_func($item['todo']);
    break;
  }
}


function doSomething()
{
  // ...
}

function doSomethingDifferent()
{
  // ...
}