是这样的:
<?PHP if (false && crazyFunction()) : ?>
的一样:
<?PHP if (false) : ?>
<?PHP if (crazyFunction()) : ?>
如果FALSE在第一个例子是评估将仍然继续评估 “crazyFunction”?
是这样的:
<?PHP if (false && crazyFunction()) : ?>
的一样:
<?PHP if (false) : ?>
<?PHP if (crazyFunction()) : ?>
如果FALSE在第一个例子是评估将仍然继续评估 “crazyFunction”?
的&&
运营商是一个shotcircuit运营商,这意味着它会尽快就知道结果会是错误的结束。
这意味着,如果左边部分的计算结果为假停止并返回false。本例中永远不会调用crazyFunction()
。
只要布尔表达式的值是已知的,它已不再是执行。
请注意老式的MySQL连接这(不建议使用)例如:
$db=mysql_connect_db('...') or die('Database error');
如果经过第一部分mysql_connect
返回的东西是不是FALSE
,0,NULL
等,它不执行此die()
。
(无论这是否正确使用mysql_*
功能)
应该是一个注释。 – 2013-03-11 14:00:51
@ KarolyHorvath我编辑它,所以它现在是一个答案。 – Voitcus 2013-03-11 14:09:37
非常多。看[这个问题在PHP短路](http://stackoverflow.com/questions/5694733/php-short-circuit-evaluation)。 – 2013-03-11 13:51:31
如果总是返回true,因此,如果您值为False(INT上面的例子),将execeute代码否则它会从“代码的else部分”执行代码 – Johny 2013-03-11 13:52:08