在if语句中设置变量变成一个循环,这个问题可以用switch-case来解决吗?


Setting variable in if statement turns into a loop, can this be solved with switch-case?

基本上我有这个:

 if ($link == "badsimXX1.7.8.9&launchtype=medium") {
 $linky=("launchtype=medium");
 }
 if ($link == "badsimXX&1.8.5.2launchtype=large") {
 $linky=("launchtype=large");
 }
 if ($link == "badsimXX&1.9.2.4launchtype=small") {
 $linky=("launchtype=small");
 }
 if ($link == "badsimXX&1.2.5.2launchtype=tiny") {
 $linky=("launchtype=tiny");
 }
 if ($link == "badsimXX&1.6.4.5launchtype=itsy") {
 $linky=("launchtype=itsy");
 }
 ?>     

我后来用它来重定向到一个页面,这导致了一个循环。所以我试着用switch:

来解决这个问题
switch($linky){
case 1:
   $link='badsimXX1.7.8.9&launchtype=medium';
   break;
case 2:
   $link='badsimXX&1.8.5.2launchtype=large';
   break;
case 3:
   $link='badsimXX&1.9.2.4launchtype=small';
 }

但这不起作用。所以要么我不能这样解决要么我的代码有问题

只需将字符串放入关联数组中,检查键是否存在,如果存在,则将相应的值分配给变量,否则使用默认值。这样的:

$check = ["badsimXX1.7.8.9&launchtype=medium" => "launchtype=medium", 
          "badsimXX&1.8.5.2launchtype=large" => "launchtype=large", 
          "badsimXX&1.9.2.4launchtype=small" => "launchtype=small", 
          "badsimXX&1.2.5.2launchtype=tiny" => "launchtype=tiny", 
          "badsimXX&1.6.4.5launchtype=itsy" => "launchtype=itsy"
         ];
if(isset($check[$link]))
    $linky = $check[$link];
else
    $linky = "default";

如果你想修改你的switch语句:

1。为switch语句

使用了错误的变量

所以改变:

switch($linky) {
          //^ See here

:

switch($link) {
         //^^ See here

2。必须将值写入case语句

从if条件中获取值并将其放入case语句中,例如

case "badsimXX1.7.8.9&launchtype=medium":

3。将相应的值赋给正确的变量

然后像在if语句中那样将值赋给正确的变量:

$linky = "launchtype=medium";
   //^ See here