我有一大组if语句,当其中一个为真时,则不需要测试以下if语句。
我不知道最好的办法是什么。
我应该创建一个函数,开关还是while循环?
每个连续的if语句都不同,并且预先创建了输入值。我将尝试创建一个简单的例子来尝试更好地解释它。
$total = ($val1+$val2+$val3)/$arbitaryvalue
if($total > 2){//Do Something
}
$total = ($val1+$val2)/$anothervalue
if($total > 2){//Do Something different
}
答案 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()
{
// ...
}