我有一个相当大的if / elseif / else条件,我想知道这是否可能是这样做的最佳方法,或者是否有更好的方法?
if (($site == '1') && ($theAction == 'subscribe')) {
$url = "https://test1.com/?na=ajaxsub";
} elseif (($site == '2') && ($theAction == 'subscribe')) {
$url = "https://test2.com/?na=ajaxsub";
} elseif (($site == '3') && ($theAction == 'subscribe')) {
$url = "https://test3.com/?na=ajaxsub";
} elseif (($site == '4') && ($theAction == 'subscribe')) {
$url = "https://test4.com/?na=ajaxsub";
} elseif (($theAction == 'unsubscribe') && ($site == '1' | '2' | '3' | '4')) {
$url = "https://test5.com/unsubscribe.php";
} else {
return;
}
答案 0 :(得分:1)
对于初学者来说,似乎无论用户$site
为何,只要用户尝试退订,都想将其重定向到同一页面 ,因此,您可以完全参与此操作不等式。
从这里开始,我建议创建一个关联数组,以将每个$site
索引映射到其对应的站点。然后,您可以根据此新的关联数组的索引简单地设置$url
,如下所示:
$site = 1; // Set the site as an integer
$theAction = 'subscribe'; // As long as it is not 'unsubscribe' the `else` will trigger
$mappings = array("1"=>"https://test1.com/?na=ajaxsub",
"2"=>"https://test2.com/?na=ajaxsub",
"3"=>"https://test3.com/?na=ajaxsub",
"4"=>"https://test4.com/?na=ajaxsub");
if ($theAction == 'unsubscribe') {
$url = "https://test5.com/unsubscribe.php";
}
else {
$url = $mappings[$site];
}
echo $url; // https://test1.com/?na=ajaxsub
可以在 here 上看到它。
如果愿意,您甚至可以使用三元条件缩减条件:
$theAction == 'unsubscribe' ? $url = "https://test5.com/unsubscribe.php" : $url = $mappings[$site];
可以看到哪些在工作 here 。