2012-03-26 50 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,則根本不檢查下一條件。