2013-02-19 30 views
0

目前,我正在做這樣的事情:針對多個值檢查一個變量?

if (in_array ($variable, ["a","b","c"])) { ... } 

其內容比

if ($variable == "a" || $variable == "b" || $variable == "c") { ... } 

更容易一點,但我想知道,有沒有更有效的辦法,而不是檢查的價值陣列?

+0

我喜歡這種做事的方式 – Dale 2013-02-19 13:15:23

回答

2

嘗試這樣

$my_array = array_flip(array('a', 'b', 'c', 'd', ...)); 
if (isset($my_array[$variable])) ... 

這有一個時間爲O(n)的成本創造$ my_array,然後進行匹配檢測爲O(1)。

+0

聲音kewl。任何基準? – vikingmaster 2013-02-19 13:17:27

+0

基準.. ??我dnt知道他們是什麼.. – Gautam3164 2013-02-19 13:19:08

+0

@Jari你可以upvote,如果它好..可能是 – Gautam3164 2013-02-19 13:19:30

0

您可以使用開關盒用於檢查變量對多個值的語句。

請參考下面提到的代碼片段

例如,

switch($a) 
    { 
     case 'a': 
    //do something 
     break; 
    case 'b': 
    //do something 
    break; 
    case 'c': 
    //do something 
    break; 
    } 
+0

我試圖縮短它:P另外,我打算在'?:'條件下使用它。 – RemiDG 2013-02-19 13:33:02