让我们假设我们有一个if语句,如:
if(something_true) {
$obj = get(my_obj);
if($obj !== null) do(something_special);
else do(the_default); # First else
}
else do(the_default); # Second else
有可能在第一个else处退出if,而在第二个else继续吗?
我的想法是,我不必写两次完全相同的代码。
像这个
if(something_true && get(my_obj) !== null) {
do(something_special);
}
else do(the_default); # Second else
这是不可能的。只有当初始条件为false时,才会执行第二个其他条件,这只是简单的逻辑。只需检查两个东西g_true和==第一个语句中的null和两个esle中的"the_default"是ashkufaraz建议在第二个语句中执行的相同操作。
取消注释的解决方案有效。如果以后您甚至需要my_obj,您可以使用以下内容:
if(something_true) && (!is_null($obj = get(my_obj);)) {
do_something_special($obj);
}
else do(the_default); # Second else
从技术上讲,ashkufaraz的建议也解决了这个问题,但我不推荐它,因为它每次都调用get(my_obj)。