如何使用else / elseif?

时间:2013-05-27 18:44:55

标签: 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';
                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时没有得到它。所以我想知道我是否正确使用该代码和我的注释行。

非常感谢。

4 个答案:

答案 0 :(得分:3)

通常,如果您的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);

使用这种方法,问题只是函数体的问题,因此您可以将其与其余代码分开解决。这就是理想的易于维护的结构。

答案 1 :(得分:2)

  

通常,如果你的if-else结构太复杂(超过两个)   卷曲?括号),这是划分的最佳时间   征服方法:创造解决分离问题的功能。

  1. 虽然这是正确的,但您的结构是可以接受的。大多数程序员都希望希望这是改变的,但是如果你习惯这种方式并且你理解它,它仍然可以工作。
  2. 其次,根据两者是否可以设置,您的else if (isset(b))可能需要也可能不需要。如果他们不能,您可以将else if (isset(b))替换为else
  3. 好的,我不确定您是否需要此功能,但这里有ifelse ifelse的快速解释。

    if (condition)用于测试条件是真还是假。如果是,则执行{}之间的代码。否则,它不是。

    else if要求上述if条件为假。如果您的if条件为false,但后续else if为真,那么else if将会执行。

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

    希望这有帮助。

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:0)

//default
$num = '1';

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