Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Синтаксис Switch
 
 автор: Zenden   (12.11.2005 в 15:09)   письмо автору
 
 

До смеха простой вопрос.
Необходимо в свитче для блока задать условие, например диапазон значений или больше/
меньше, как это сделать синтаксически грамотно и возможно ли это вообще на php?

Пример:
case 5 to 10:
case is > 5:
что-то в этом духе надо.

   
 
 автор: Artem S.   (12.11.2005 в 15:48)   письмо автору
 
   для: Zenden   (12.11.2005 в 15:09)
 

обычно в этом случае делают так

<?
if( $is and $is 10)
...
elseif( 
$is >10 and $is 15)
....
else
...
?>

   
 
 автор: Zenden   (12.11.2005 в 16:45)   письмо автору
 
   для: Artem S.   (12.11.2005 в 15:48)
 

Спасибо конечно, но если я спрашиваю про switch, значит мне нужен switch а не if !

   
 
 автор: WebTech   (12.11.2005 в 17:54)   письмо автору
 
   для: Zenden   (12.11.2005 в 16:45)
 

Switch на то и существует, чтобы выражение вычислялось один раз и потом по результатам выражения выполняется условие. В твоем случае лучше использовать if.

   
 
 автор: Zenden   (12.11.2005 в 18:02)   письмо автору
 
   для: WebTech   (12.11.2005 в 17:54)
 

ясно, спасибо

   
 
 автор: Artem S.   (12.11.2005 в 18:03)   письмо автору
 
   для: Zenden   (12.11.2005 в 16:45)
 

The case expression may be any expression that evaluates to a simple type, that is, integer or floating-point numbers and strings. Arrays or objects cannot be used here unless they are dereferenced to a simple type.

(C) php.net

Для тех кто не понял - выражение в case может быть только простого типа (текст, число)
Switch по сути тот же if else

   
 
 автор: Football   (12.11.2005 в 18:29)   письмо автору
 
   для: Artem S.   (12.11.2005 в 18:03)
 

То что это тот же if else понятно, но эта конструкция выполняется, когда надо рассмотреть более 3 конструкций. В этом случае вкладывать один в другой условный оператор неудобно!

   
 
 автор: Artem S.   (12.11.2005 в 18:53)   письмо автору
 
   для: Football   (12.11.2005 в 18:29)
 

Зачем вкладывать

<?
if( ) { }                // первый case
elseif( ) { }        // второй case
elseif( ) { }        // третий case
elseif( ) { }        // четвертый case
else( ) { }          // default
?>

   
 
 автор: Football   (12.11.2005 в 20:35)   письмо автору
 
   для: Artem S.   (12.11.2005 в 18:53)
 

Да, очень удобно несколько раз писать elseif {} ... :)
ИМХО это только самый плохой программист воспользуется такой конструкцией

   
 
 автор: Artem S.   (12.11.2005 в 21:46)   письмо автору
 
   для: Football   (12.11.2005 в 20:35)
 

Не знаю, достаточно наглядно. Даже сравнивая с кодом ниже.

   
 
 автор: isset   (12.11.2005 в 21:54)   письмо автору
 
   для: Artem S.   (12.11.2005 в 21:46)
 

С таким кодом как выше нельзя сделать проверку сразу по нескольким условиям, swich же позволяет проверить все условия если не остановить его break-ом

   
 
 автор: Artem S.   (12.11.2005 в 23:29)   письмо автору
 
   для: isset   (12.11.2005 в 21:54)
 

Можно все, но вот что рациональнее это вопрос.
Всему свое место. Где-то switch где-то if else

   
 
 автор: isset   (13.11.2005 в 00:22)   письмо автору
 
   для: Artem S.   (12.11.2005 в 23:29)
 

Я бы хотел увидеть как сделать несколько проверок через if+elseif+else

   
 
 автор: Artem S.   (13.11.2005 в 08:48)   письмо автору
 
   для: isset   (13.11.2005 в 00:22)
 

Если вы не против, давайте начнем новую тему, а то совсем выбиваемся из сути вопроса.

   
 
 автор: isset   (12.11.2005 в 19:31)   письмо автору
 
   для: Zenden   (12.11.2005 в 15:09)
 

С чего вы взяли что нельзя? Можно.

<?
$a 
15;
switch(
true) {
    case (
$a 15 && $a 0):
        echo 
$a." меньше 15 и больше 0";
    break;
    case (
$a 10 && $a 100):
        echo 
$a." больше 15 и меньше 100";
    case (
$a == 15):
        echo 
$a." равно 15 и меньше 100";
    break;
}
?>

   
 
 автор: Artem S.   (12.11.2005 в 19:34)   письмо автору
 
   для: isset   (12.11.2005 в 19:31)
 

точно можно... ни разу не видел... ушел читать manual....

   
 
 автор: Zenden   (15.11.2005 в 20:10)   письмо автору
 
   для: Artem S.   (12.11.2005 в 19:34)
 

Вот наконец-то нашелся хоть один человек который смог зарядить switch :)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования