[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: оператор switch
phpstarter
чтобы я не делал как бы я не видоизменял условие, переставлял туда сюда разные блоки....
Всеравно выполняется условие второе по счету.....

В чем проблема никак не могу понять... Помогите пожалуйста

$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 всеравно не очень нужен был.... smile.gif ну и логика немного неверна, я ее подправил.... еще раз спасибо

Спустя 3 минуты, 49 секунд (28.03.2010 - 14:12) sergeiss написал(а):
Всё написанное выше верно, я только немного дополню.

switch используется для выбора из некоторого набора значений, без выражений.
Если нужны выражения в сравнении (как в данной теме), то тогда нужно использовать if-else.

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

Спустя 57 минут, 21 секунда (29.03.2010 - 11:27) sergeiss написал(а):
phpstarter - ты не прав smile.gif

В твоем случае лучше (правильнее, логичнее) будет так сделать:

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" ;


Если не по одной строке обрабатываешь, то просто создаешь блоки фигурными скобками.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.