2013-03-11 77 views
1

基本上如何解释“if”语句中的多个表达式?

是这样的:

<?PHP if (false && crazyFunction()) : ?> 

的一样:

<?PHP if (false) : ?> 
    <?PHP if (crazyFunction()) : ?> 

如果FALSE在第一个例子是评估将仍然继续评估 “crazyFunction”?

+2

非常多。看[这个问题在PHP短路](http://stackoverflow.com/questions/5694733/php-short-circuit-evaluation)。 – 2013-03-11 13:51:31

+0

如果总是返回true,因此,如果您值为False(INT上面的例子),将execeute代码否则它会从“代码的else部分”执行代码 – Johny 2013-03-11 13:52:08

回答

2

&&运营商是一个shotcircuit运营商,这意味着它会尽快就知道结果会是错误的结束。

这意味着,如果左边部分的计算结果为假停止并返回false。本例中永远不会调用crazyFunction()

0

只要布尔表达式的值是已知的,它已不再是执行。

请注意老式的MySQL连接这(不建议使用)例如:

$db=mysql_connect_db('...') or die('Database error'); 

如果经过第一部分mysql_connect返回的东西是不是FALSE,0,NULL等,它不执行此die()

(无论这是否正确使用mysql_*功能)

+0

应该是一个注释。 – 2013-03-11 14:00:51

+0

@ KarolyHorvath我编辑它,所以它现在是一个答案。 – Voitcus 2013-03-11 14:09:37