将If / Else转换为Switch

时间:2015-01-29 17:52:52

标签: php

如何将下面的内容转换为切换而不是If / Else?我读过如果我有超过if/elseif/else我应该使用开关

 $domain = ($_SERVER['HTTP_HOST']);

    if ($_SERVER['HTTP_HOST']=="domain1.com" && strpos($_SERVER['REQUEST_URI'], 'ab03') !== false ) {
        codeblock();
        $tlink = "http://google.com";
    } elseif ($_SERVER['HTTP_HOST']=="domain1.com" && strpos($_SERVER['REQUEST_URI'], 'ab05') !== false ) {
        $tlink = "http://cnn.com";
} elseif ($_SERVER['HTTP_HOST']=="domain2.com" && strpos($_SERVER['REQUEST_URI'], 'ab05') !== false ) {
        $tlink = "http://yahoo.com";
} elseif ($_SERVER['HTTP_HOST']=="domain3.com" && strpos($_SERVER['REQUEST_URI'], 'ab05') !== false ) {
        $tlink = "http://example.com";
    } else {
        $tlink = "http://cbs.com";
    }

2 个答案:

答案 0 :(得分:2)

你可以在5秒的谷歌搜索中找到这个......

switch($i){
   case 0:
   break;
}

只需将$ i替换为$_SERVER['HTTP_HOST']即可将0与需要的值示例domain1.com进行比较。

http://php.net/manual/en/control-structures.switch.php

然而switch并未真正适应您的代码,因为if中有多个条件。由于第二个条件似乎始终相同,您可以简单地将switch放在第二个条件的if中,或者在每个案例中使用该子句,但这将是冗余代码。

答案 1 :(得分:1)

尝试使用代码

    switch ($domain) {
    case 'domain1.com':
        if(strpos($_SERVER['REQUEST_URI'], 'ab03') !== false) {
            codeblock();
            $tlink = "http://google.com";         
        } elseif(strpos($_SERVER['REQUEST_URI'], 'ab05') !== false ) {
            $tlink = "http://cnn.com";
        }
    break;
    case 'domain2.com':
        if(strpos($_SERVER['REQUEST_URI'], 'ab05') !== false) {
            $tlink = "http://yahoo.com";
        }
    break;
    case 'domain3':
        if(strpos($_SERVER['REQUEST_URI'], 'ab05') !== false ) {
            $tlink = "http://example.com";
        }
    break;
    default:
        $tlink = "http://cbs.com";
    break;  
}