如何将下面的内容转换为切换而不是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";
}
答案 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;
}