2012-03-26 71 views
1

说,你有这样的条件;php执行次序

if ($condition_1 && $condition_2)

,你必须写它作为

if ($condition_2 && $condition_1)

的选项现在,如果condition_1需要1毫秒,以弄清楚它是否在另一方面true或false condition_2需要更长的时间,比如1000ms !,你会以哪种方式将上述条件写为?在右边还是在左边的较慢的一个?

我假设当发现其中一个条件为FALSE时,PHP不会检查其他条件是否为TRUE。如果是这样,那将是本世纪最大的惊喜!

+2

与if语句,你最大的问题”不是个在1000毫秒运行在功能t哪一个首先运行 – 2012-03-26 18:02:23

+1

这被称为[短路评估](http://en.wikipedia.org/wiki/Short-circuit_evaluation),并且PHP做它。试试看看。 – Wiseguy 2012-03-26 18:04:01

+0

@andreas!这是一个虚假的问题,我可以说1ms vs 2ms这个问题,那个时候,我肯定有人会提出,为什么要这么做。 :) – 2012-03-26 18:11:06

回答

2

C and C++ break on first FALSE in AND condition。 PHP也是如此。所以,我会建议先放一个较短的。这个例子清楚地表明了情况:

function short(){ 
    return false; 
} 

function long(){ 
    sleep(5);// sleep for 5 secondsd 
    return true; 
} 

if (short() && long()){ 
    echo "condition passed"; 
}else{ 
    echo "condition failed"; 
} 

这几乎立即打印“条件失败”,而无需等待5秒....

9

从左到右评估条件。把最短的条件放在最左边的位置。你是对的,如果if语句中最左边的条件变为false,则根本不检查下一条件。