Php 如何使用else/elseif?

Php 如何使用else/elseif?,php,html,if-statement,Php,Html,If Statement,我很难理解一些if-else子句,我想知道如何设置逻辑 我有以下代码: //if isset a or b if (isset(a) || isset(b) ) { //if isset a if (isset(a)) { switch(a) { case '1' : $num = '1'; break; case '2' : $num = '2';

我很难理解一些if-else子句,我想知道如何设置逻辑

我有以下代码:

//if isset a or b
if (isset(a) || isset(b) ) {
        //if isset a
    if (isset(a)) {
            switch(a) {
                case '1' : $num = '1';
                break;
                case '2' : $num = '2';
                break;
                case '3' : $num = '3';
                break;
            }
    //if not isset a check b for $num
        } else if (isset(b)) {
            switch(b){
                case '1' : $num = '1';
                break;
                case '2' : $num = '2';
                break;
                case '3' : $num = '3';
                break;
            }
        }
//if not isset a and b, set default 
} else {
        $num = '1';
    }
问题是我没有知道何时使用else/else if。所以我想知道我的代码和注释行是否正确


非常感谢。

您可以使用以下方法避免许多控制流问题

if(isset(a)) {
    $num = a;
} else if(isset(b)) {
    $num = b;
}

$arr = array('1', '2', '3');
if(!in_array($num, $arr)) {
    $num = '1';
}

使用以下方法可以避免许多控制流问题

if(isset(a)) {
    $num = a;
} else if(isset(b)) {
    $num = b;
}

$arr = array('1', '2', '3');
if(!in_array($num, $arr)) {
    $num = '1';
}
通常,如果if-else结构过于复杂,超过了两级花括号,那么现在是采用分而治之方法的最佳时机:创建解决分离问题的函数

function getNum(&$a, &$b, $options) { 
  if(isset($a) && in_array($a,$options)) return $a;
  if(isset($b) && in_array($b,$options)) return $b;
  return 1;
}

$options = array(1,'2','whatever');
$num = getNum($a,$b,$options);
使用这种方法,问题只是函数体的问题,因此您可以将其与代码的其余部分分开解决。这是理想的易于维护的结构。

一般来说,如果if-else结构过于复杂,超过了两级花括号,那么现在是分而治之方法的最佳时机:创建解决分离问题的函数

function getNum(&$a, &$b, $options) { 
  if(isset($a) && in_array($a,$options)) return $a;
  if(isset($b) && in_array($b,$options)) return $b;
  return 1;
}

$options = array(1,'2','whatever');
$num = getNum($a,$b,$options);
使用这种方法,问题只是函数体的问题,因此您可以将其与代码的其余部分分开解决。这是理想的易于维护的结构

一般来说,如果你的if-else结构太复杂,超过两个 花括号的级别,这是进行除法运算的最佳时间 征服方法:创建解决分离问题的函数

function getNum(&$a, &$b, $options) { 
  if(isset($a) && in_array($a,$options)) return $a;
  if(isset($b) && in_array($b,$options)) return $b;
  return 1;
}

$options = array(1,'2','whatever');
$num = getNum($a,$b,$options);
虽然这是正确的,但您的结构是可以接受的。大多数程序员都希望改变这种情况,但如果您能够以这种方式工作并且理解它,它仍然可以工作。 其次,您的else if issetb可能需要,也可能不需要,这取决于两者是否都可以设置。如果他们不能,你可以用else替换你的else If。 好的,我不确定你是否需要这个,但是这里有一个关于if,elseif和else的快速解释

如果条件用于测试条件是否为真。如果为true,则执行{和}之间的代码。否则,情况并非如此

else if要求上述if的条件为假。如果您的If条件为false,但以下任何else If为true,则将执行该else If

最后,如果if和elseif的所有条件都返回false,则执行else的代码

希望这有帮助

一般来说,如果你的if-else结构太复杂,超过两个 花括号的级别,这是进行除法运算的最佳时间 征服方法:创建解决分离问题的函数

function getNum(&$a, &$b, $options) { 
  if(isset($a) && in_array($a,$options)) return $a;
  if(isset($b) && in_array($b,$options)) return $b;
  return 1;
}

$options = array(1,'2','whatever');
$num = getNum($a,$b,$options);
虽然这是正确的,但您的结构是可以接受的。大多数程序员都希望改变这种情况,但如果您能够以这种方式工作并且理解它,它仍然可以工作。 其次,您的else if issetb可能需要,也可能不需要,这取决于两者是否都可以设置。如果他们不能,你可以用else替换你的else If。 好的,我不确定你是否需要这个,但是这里有一个关于if,elseif和else的快速解释

如果条件用于测试条件是否为真。如果为true,则执行{和}之间的代码。否则,情况并非如此

else if要求上述if的条件为假。如果您的If条件为false,但以下任何else If为true,则将执行该else If

最后,如果if和elseif的所有条件都返回false,则执行else的代码


希望这能有所帮助。

如果不需要issetb,则必须设置else,因为如果未设置a,则必须设置b,因为需要使用第一个if子句。你可以用其他的如果两个都设置好了怎么办?那取决于他的需要。如果a比b更重要,他应该用else代替。如果没有,他可以这样离开。这不是必要的,但可能合乎逻辑,但这是一项开销,是的。他的意思是,如果a else if b else num=1,你可以删除最外层的if else if issetb,因为如果a未设置,那么b必须设置,因为你的第一个if子句。你可以用其他的如果两个都设置好了怎么办?那取决于他的需要。如果a比b更重要,他应该用else代替。如果没有,他可以这样离开。这不是必要的,但可能合乎逻辑,但这是一项开销,是的。他的意思是,如果a else如果b else num=1,你可以去掉最外层的ifhello和thank。对不起,我弄错了。考虑到要缩短代码,而不是只考虑1和2,从开关中有比只有2更多的选项。所以我更新了代码。@bonny已更新,可以处理您以后要添加的任何号码。您好,谢谢。对不起,我弄错了。考虑到要缩短代码,而不是只考虑1和2,从开关中有比只有2更多的选项。所以我更新了代码。@bonny已更新以处理您以后要添加的任何号码。您好,谢谢。对不起,我弄错了。我想缩短代码,但没有
t考虑到只有1和2,从开关中选择的选项比只有2个多得多。所以我更新了代码。我看到了-我更新了答案-看到了代码的后半部分。好的,这很简单,但只有当a和b是数字时才有效。在我的例子中,a和b包含字符串。再次更新并删除了应答Hello和Thanke中不太有趣的部分。对不起,我弄错了。考虑到要缩短代码,而不是只考虑1和2,从开关中有比只有2更多的选项。所以我更新了代码。我看到了-我更新了答案-看到了代码的后半部分。好的,这很简单,但只有当a和b是数字时才有效。在我的例子中,a和b包含字符串。再次更新并删除了答案中不太有趣的部分。我唯一的问题是我们不知道id$num=a是否有效。我唯一的问题是我们不知道id$num=a是否有效。如果这是一个好的解决方案。