[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: if-else логика
LRCenter
Есть такой код:


if ($num=='1') {echo "1";}
if ($num=='2') {echo "2";}
if ($num=='3') {echo "3";}

else {echo "0";}



если num=1 или num=2, то ноль выводится. Невыводится только если num=3

Как сделать чтобы else распространялся на все if, только красиво и без извращений?



Спустя 3 минуты, 40 секунд (7.10.2010 - 18:54) olex0731 написал(а):
switch($num){
case '1':
case '2': echo '0'.$num; break;
case '3': echo '3'; break;
}


if($num=='3') echo '3';
else {
if($num=='1') echo '1';
if($num=='2') echo '2';
echo '0';
}

Спустя 3 минуты, 39 секунд (7.10.2010 - 18:58) LRCenter написал(а):
Не пойдет, это извращение - надо чтоб без вложенных условий и дополнительных переменных. Так я и сам могу. Со свичами тоже не пойдет - нужно сохранить операторы if и else.

Спустя 1 минута, 26 секунд (7.10.2010 - 18:59) olex0731 написал(а):
Это не извращение, а правильная конструкция выбора при 3+ вариантов... Если Вы про switch()

Спустя 2 минуты, 59 секунд (7.10.2010 - 19:02) LRCenter написал(а):
Знаю что есть какое то простое решение в самом языке, но забыл. Там какой-то оператор должен вставлятся между последним if и else, типа endif; - но что-то другое, он не работает.

Спустя 3 минуты, 11 секунд (7.10.2010 - 19:05) olex0731 написал(а):
ну, есть конструкция elseif, но это эквивалентно else if... Но в Вашем случае два варианта после первого if, поэтому последующие if выделены в {}

Спустя 1 минута, 47 секунд (7.10.2010 - 19:07) olex0731 написал(а):
http://ru.php.net/manual/en/control-structures.switch.php - тут как раз Ваша задача рассмотрена кстати smile.gif почти...

Спустя 18 секунд (7.10.2010 - 19:07) kovaldm написал(а):

if($num == '1') echo '1';
elseif($num == '2') echo '2';
elseif($num == '3') echo '3';
else echo '0';

Спустя 3 минуты, 49 секунд (7.10.2010 - 19:11) olex0731 написал(а):
Цитата (kovaldm @ 7.10.2010 - 16:07)

if($num == '1') echo '1';
elseif($num == '2') echo '2';
elseif($num == '3') echo '3';
else echo '0';

0 тогда вообще не будет выведен, при 1>=$num<=3

Спустя 7 минут, 28 секунд (7.10.2010 - 19:19) kovaldm написал(а):
Пардон, я неправильно понял условие.

Спустя 1 час, 19 минут, 21 секунда (7.10.2010 - 20:38) Invis1ble написал(а):
LRCenter
ты извини конечно, но помоему извращением занимаешься ты в данном случае.. Смысл всех этих лишних телодвижений? Вот код:
echo $num == 3 ? '3' : '0';

Спустя 14 часов, 48 минут, 12 секунд (8.10.2010 - 11:26) LRCenter написал(а):
Invis1ble
Это, я просто для наглядности. Вместо простого вывода цифр, предпологается куча кода.

olex0731 прав, похоже, лучше свитчей ничего не придумать.

Спустя 4 часа, 11 минут, 45 секунд (8.10.2010 - 15:38) Invis1ble написал(а):
LRCenter
ну тогда конструкция switch-case подходит лучше всего


_____________
Меньше кода - меньше багов ©
Быстрый ответ:

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