PHP-Swich оператор с условным переключателем

Могу ли я поставить условное заявление в заявлении переключателя. ex — switch ($ totaltime<= 13) Кроме php как насчет совместимости с другими языками?

$totaltime=15;

switch ($totaltime<=13) {

case ($totaltime <= 1):
echo "That was fast!";
break;

case ($totaltime <= 5):
echo "Not fast!";
break;

case ($totaltime >= 10 && $totaltime<=15):
echo "That's slooooow";
break;
}

редактировать

$totaltime=12;
switch (false) {
case ($totaltime <= 1):
echo "That was fast!";
break;
case ($totaltime <= 5):
echo "Not fast!";
break;
case ($totaltime >= 10 && $totaltime<=13):
echo "That's slooooow";
break;
default: // do nothing break;
}

Джентльмен в этом случае, почему alwyas показывают вывод как «Это было быстро!»?

0

Решение

Switch только проверяет, является ли первое условие вторым, таким образом:

switch (CONDITION) {
case CONDITION2:
echo "CONDITION is equal to CONDITION2";
break;
}

Таким образом, вы должны сделать это следующим образом:

switch (true) {
case $totaltime <= 1: #This checks if true (first condition) is equal to $totaltime <= 1 (second condition), so if $totaltime is <= 1 (true), is the same as checking true == true.
echo "That was fast!";
break;

case $totaltime <= 5:
echo "Not fast!";
break;

case $totaltime >= 10 && $totaltime<=13:
echo "That's slooooow";
break;
}

Вместо этого я пойду на if-elseif заявления. Проще понять с первого взгляда:

if ($totaltime <= 1) {
echo "That was fast!";
} elseif($totaltime <= 5) {
echo "Not fast!";
} elseif($totaltime >= 10 && $totaltime<=13) {
echo "That's slooooow";
}
2

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

Да, вы можете (кроме сравнения внутри коммутатора)

$totaltime=12;

switch (true) {

case ($totaltime <= 1):
echo "That was fast!";
break;

case ($totaltime <= 5):
echo "Not fast!";
break;

case ($totaltime >= 10 && $totaltime<=13):
echo "That's slooooow";
break;

default:
// do nothing
break;
}
1

Да, вы можете из документации по переключателям PHP:

Оператор switch аналогичен серии операторов IF для одного и того же выражения. Во многих случаях вам может потребоваться сравнить одну и ту же переменную (или выражение) со многими различными значениями.

Когда case имеет постоянное значение, это все равно, что сказать, case value == значение переключателя, но вы можете иметь более сложные выражения для case.

0
По вопросам рекламы [email protected]