我知道這可能是一個簡單的問題,但想知道關於此的每一個意見。Switch和IF有什麼區別?
在開關和IF函數之間的區別是什麼?我可以看到的是,凡是「開關」功能使用「中頻」功能也適用於那裏..如果我錯了我糾正我。
或兩者之間的任何性能明智的區別?
我知道這可能是一個簡單的問題,但想知道關於此的每一個意見。Switch和IF有什麼區別?
在開關和IF函數之間的區別是什麼?我可以看到的是,凡是「開關」功能使用「中頻」功能也適用於那裏..如果我錯了我糾正我。
或兩者之間的任何性能明智的區別?
或兩者之間的任何性能明智差異?
忘掉這個級別上的性能差異 - 可能是微觀的,但只有在進行數十萬次操作時(如果有的話),您纔會感受到它。 switch
是爲了更好的代碼的可讀性和可維護性的構建:
switch ($value)
{
case 1: .... break;
case 2: .... break;
case 3: .... break;
case 4: .... break;
case 5: .... break;
default: .... break;
}
主要是更清潔和可讀性比
if ($value == 1) { .... }
elseif ($value == 2) { .... }
elseif ($value == 3) { .... }
elseif ($value == 4) { .... }
elseif ($value == 5) { .... }
else { .... }
編輯:由庫亨的評論啓發,爲了完整性一些benchmarks(結果會有所不同,這是一個活的)。請記住,這些是運行1000次的測試。一對if
的差異是完全可以忽略。
結論(來自phpbench.com):
使用switch /箱或如果/ elseif的幾乎是相同的。請注意,測試未執行===(正好等於),並且稍微比使用==(等於)要快。
如果您有簡單的條件,比如某件事等同於其他事物,那麼一個開關就是理想的。
例如,而不是做了以下內容:
if($bla == 1) {
} elseif($bla == 2) {
} elseif($bla == 3) {
} etc...
這是更好地做這樣的:
switch($bla) {
case 1:
...
break;
case 2:
...
break;
case 3:
...
break;
default:
...
break;
}
或者,如果你有複雜的條件下,你應該使用的if/else 。
我認爲這是所有意見的問題,但有些人根本不使用switch語句,並堅持使用if/else。
不過,不要忘記,開關並不一定是簡單的if語句。記住,在每種情況結束時交換機不需要中斷,並且讓中斷可以讓你'跌入'下一個案例,也可以允許一些有趣而複雜的'ifs'。
不,你說得對。
這些陳述之間沒有太大的區別。
你可以使用你喜歡的。
請記住,如果您必須使用超過3-4個連續條件 - 這意味着您很可能有設計缺陷。
通常,您可以用循環或更清晰的應用程序設計替換這樣的語句。
關於設計的好處。一個巨大的switch語句在一個循環中幾乎總是會變得更好,或者出現錯誤。 – 2010-07-05 11:47:00
我想答案是「它取決於」或「沒有性能差異」,但我會首先要求一個例子.. – 2010-07-05 10:39:42