Всеравно выполняется условие второе по счету.....
В чем проблема никак не могу понять... Помогите пожалуйста
$switcher_var=0;
switch ($switcher_var)
{
case ($switcher_var<2):
echo "switcher<2" ;
break;
case ($switcher_var>=2):
echo "switcher>=2" ;
break;
case ($switcher_var>=4):
echo "switcher>=4" ;
break;
case ($switcher_var>=6):
echo "switcher>=6" ;
break;
}
при прогоне данного скрипта выводится switcher>=2 хотя мы занем что switcher=0
Спустя 3 минуты, 47 секунд (27.03.2010 - 16:48) MatrixGod написал(а):
2-е по счету, то есть:
?
case ($switcher_var>=2):
echo "switcher>=2" ;
break;
?
Спустя 8 минут, 38 секунд (27.03.2010 - 16:57) ZigZag написал(а):
Цитата |
чтобы я не делал как бы я не видоизменял условие, переставлял туда сюда разные блоки.... Всеравно выполняется условие второе по счету..... В чем проблема никак не могу понять... Помогите пожалуйста $switcher_var=0; switch ($switcher_var) { case ($switcher_var<2): echo "switcher<2" ; break; case ($switcher_var>=2): echo "switcher>=2" ; break; case ($switcher_var>=4): echo "switcher>=4" ; break; case ($switcher_var>=6): echo "switcher>=6" ; break; } при прогоне данного скрипта выводится switcher>=2 хотя мы занем что switcher=0 |
Потому что код преобразуеться в такой:
$switcher_var=0;
switch ($switcher_var)
{
case true:
echo "switcher<2" ;
break;
case false:
echo "switcher>=2" ;
break;
case false:
echo "switcher>=4" ;
break;
case false:
echo "switcher>=6" ;
break;
}
А мы знаем что true это 1 а false это 0 если не сравнивать типы, вот он и входит в первую попавшуюся case с false ($switcher_var=0 что идеентично $switcher_var=false)
Спустя 22 часа, 11 минут, 21 секунда (28.03.2010 - 14:08) phpstarter написал(а):
спасибо , решил проблему так , если будет 0 то пусть он становится 1ницей.... мне 0 всеравно не очень нужен был....
ну и логика немного неверна, я ее подправил.... еще раз спасибо

Спустя 3 минуты, 49 секунд (28.03.2010 - 14:12) sergeiss написал(а):
Всё написанное выше верно, я только немного дополню.
switch используется для выбора из некоторого набора значений, без выражений.
Если нужны выражения в сравнении (как в данной теме), то тогда нужно использовать if-else.
switch используется для выбора из некоторого набора значений, без выражений.
Если нужны выражения в сравнении (как в данной теме), то тогда нужно использовать if-else.
Спустя 20 часов, 17 минут, 9 секунд (29.03.2010 - 10:29) phpstarter написал(а):
if else я думаю лучше использовать когда надо сравнить 2-3 вещи... Но когда приходиться сравнивать много разных вещей то кажется switch удобней
в любом случае у меня пока все ок


Спустя 57 минут, 21 секунда (29.03.2010 - 11:27) sergeiss написал(а):
phpstarter - ты не прав 
В твоем случае лучше (правильнее, логичнее) будет так сделать:
Если не по одной строке обрабатываешь, то просто создаешь блоки фигурными скобками.

В твоем случае лучше (правильнее, логичнее) будет так сделать:
if ($switcher_var<2)
echo "switcher<2" ;
elseif ($switcher_var>=2)
echo "switcher>=2" ;
elseif ($switcher_var>=4)
echo "switcher>=4" ;
elseif ($switcher_var>=6)
echo "switcher>=6" ;
Если не по одной строке обрабатываешь, то просто создаешь блоки фигурными скобками.