我为一些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。所以我想知道我的代码和我的注释行是否正确。
非常感谢。
发布于 2013-05-28 03:00:32
通常,如果您的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);使用这种方法,问题只是函数体的问题,所以您可以将其与其余代码分开解决。这就是理想的、易于维护的结构。
发布于 2013-05-28 03:31:41
通常,如果您的if-else结构太复杂(超过两层花括号),这是使用分而治之方法的最佳时机:创建解决独立问题的函数。
else if (isset(b)),这可能是必要的,也可能不是必要的,这取决于两者是否都可以设置。如果不能,你可以用else.替换你的else if (isset(b))
好的,我不确定您是否需要这个,但这里有一个关于if、else if和else的快速解释。
if (condition)用于测试条件是否为真或假。如果为真,则执行{和}之间的代码。否则,它就不是。
else if要求以上if的条件为false。如果您的if的条件为false,但后面的任何else if为true,则将执行该else if。
最后,如果所有if和else if的条件都返回false,则执行else的代码。
希望这能有所帮助。
发布于 2013-05-28 02:50:02
使用以下方法可以避免许多控制流问题。
if(isset(a)) {
$num = a;
} else if(isset(b)) {
$num = b;
}
$arr = array('1', '2', '3');
if(!in_array($num, $arr)) {
$num = '1';
}https://stackoverflow.com/questions/16778855
复制相似问题