首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用else/else to?

如何使用else/else to?
EN

Stack Overflow用户
提问于 2013-05-28 02:44:55
回答 4查看 138关注 0票数 1

我为一些if-else子句而苦苦挣扎,并希望得到一个关于如何设置逻辑的建议。

我有以下代码:

代码语言:javascript
复制
//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。所以我想知道我的代码和我的注释行是否正确。

非常感谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-05-28 03:00:32

通常,如果您的if-else结构太复杂(超过两层花括号),这是分而治之的最佳时机:创建解决独立问题的函数。

代码语言:javascript
复制
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);

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

票数 3
EN

Stack Overflow用户

发布于 2013-05-28 03:31:41

通常,如果您的if-else结构太复杂(超过两层花括号),这是使用分而治之方法的最佳时机:创建解决独立问题的函数。

  1. 虽然是正确的,但你的结构是可以接受的。大多数程序员都希望改变这一点,但是如果你对这种工作方式感到满意并且理解它,它仍然会work.
  2. Secondly,你的else if (isset(b)),这可能是必要的,也可能不是必要的,这取决于两者是否都可以设置。如果不能,你可以用else.

替换你的else if (isset(b))

好的,我不确定您是否需要这个,但这里有一个关于ifelse ifelse的快速解释。

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

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

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

希望这能有所帮助。

票数 2
EN

Stack Overflow用户

发布于 2013-05-28 02:50:02

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

代码语言:javascript
复制
if(isset(a)) {
    $num = a;
} else if(isset(b)) {
    $num = b;
}

$arr = array('1', '2', '3');
if(!in_array($num, $arr)) {
    $num = '1';
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16778855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档