我讨论了一些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时没有得到它。所以我想知道我是否正确使用该代码和我的注释行。
非常感谢。
答案 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结构太复杂(超过两个) 卷曲?括号),这是划分的最佳时间 征服方法:创造解决分离问题的功能。
else if (isset(b))
可能需要也可能不需要。如果他们不能,您可以将else if (isset(b))
替换为else
。好的,我不确定您是否需要此功能,但这里有if
,else if
和else
的快速解释。
if (condition)
用于测试条件是真还是假。如果是,则执行{
和}
之间的代码。否则,它不是。
else if
要求上述if
条件为假。如果您的if
条件为false,但后续else if
为真,那么else if
将会执行。
最后,如果所有if
和else 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;
}