2010-12-03 49 views
16

让我们说我有这样的事情:PHP - 如果(条件)执行

if(1 == 0 && do_stuff()) { 
    ... 
} 

显然,1不为0,所以没有点检查其他条件。那么PHP有没有运行do_stuff()

+1

运行第二个条件。如果你总是希望“do_stuf”执行对象,你当然可以把它作为首要条件如果。请参阅我的答案了解详情。 – 2010-12-03 10:45:24

回答

35

否 - PHP使用延迟评估(有时称为短路评估),因此如果逻辑AND中的第一个条件为假,则它不会尝试评估任何其他条件。

同样,如果你正在做一个OR,并且第一个条件是真的,它不会评估第二个条件。

+11

这就是为什么你应该把昂贵的测试放在正确的位置上的原因 – Gordon 2010-12-03 10:40:03

1

不,在这种情况下它不会执行do_stuff()

4

如果第一个条件是假,那么PHP从未在& &操作