PHP在访问if之后使用else


PHP use else after accessing a if

让我们假设我们有一个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)。