Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Конструкция switch-case или elseif лучше?
Покинул форум
Сообщений всего: 128
Дата рег-ции: Апр. 2010
Помог: 1 раз(а)
Всем добрый утро..
Есть 2 вопроса:
1. Почему при $d=0 , скрипт выводит следующее-->
Дискриминант равен 0
действительных решений нет
x1=-2
x2=-2
почему он думает что $d<0?
2. И еще вопрос в чем отличие этой конструкции switch() case:..
от elseif?
В каких случаях что лучше использоваь?
----- Если все время идти вперед, до цели будет немного ближе..
valenok
Отправлено: 05 Апреля, 2011 - 20:07:25
Здесь могла бы быть ваша реклама
Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006 Откуда: Israel
Помог: 3 раз(а)
Потому, что конструкция switch работает немного по другому.
Она сравнивает аргумент $d с тем, что написано в скобочках.
Тоесть происходит три сравнения
1. $d == ($d<0) что у него переводится в (false == false) = true и поэтому исполняется это
2. $d == ($d == 0)
3. $d == ($d >0)
можно сделать к примеру так
switch(true):
case ($d>0): break;
case ($d==0): break;
case ($d<0): break;
endswitch;
но лучше использовать в данном случае elseif так как у тебя всего три варианта и в одном из них нужно вовсе прекратить выполнение скрипта.
Покинул форум
Сообщений всего: 128
Дата рег-ции: Апр. 2010
Помог: 1 раз(а)
valenok пишет:
Она сравнивает аргумент $d с тем, что написано в скобочках.
Понятно , вроде работает как надо..
Тоесть если логические варианты нужно в скобках писать true,
а если варианты - числа, то будет-->
switch $x
{
case 1: ..;
case 34: ..;
case 5878: ..;
}
И всеже хотел еще спросить что эффективнее работает? или серверу все равно?
Пока прихожу к выводу что если варианты числа то надо - switch - case..
если логика - то if.. elseif...;
это так? и если ли еще аргументы в пользу какого-то способа?
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.