Установка переменной в операторе if превращается в цикл, это можно решить с помощью 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($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';
}

Но это не сработало. Так что либо я не могу решить это так, либо что-то не так с моим кодом.

0

Решение

Просто поместите ваши строки в ассоциативный массив и проверьте, существует ли ключ, и если да, присвойте соответствующее значение переменной или, если нет, используйте значение по умолчанию. Как это:

$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. Вы должны указать свои значения в выписке по делу.

Возьмите значения из ваших условий if и поместите их в выражения case, например,

case "badsimXX1.7.8.9&launchtype=medium":

3. Присвойте соответствующее значение правильной переменной

Затем присвойте значения, как в ваших операторах if, правильной переменной:

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

Другие решения

Других решений пока нет …