За последние 24 часа нас посетили 16603 программиста и 1680 роботов. Сейчас ищут 933 программиста ...

IF-else или switch-case

Тема в разделе "PHP для новичков", создана пользователем allowance, 26 сен 2010.

  1. allowance

    allowance Активный пользователь

    С нами с:
    19 янв 2010
    Сообщения:
    196
    Симпатии:
    0
    Дорустим есть такой код:

    if($a ==1){ запрос в бд со значением $a }
    if($a ==2){ запрос в бд со значением $a }
    if($a ==3){ запрос в бд со значением $a }
    if($a ==4){ запрос в бд со значением $a }
    if($a ==5){ запрос в бд со значением $a }
    if($a ==6){ запрос в бд со значением $a }
    if($a ==7){ запрос в бд со значением $a }
    if($a ==8){ запрос в бд со значением $a }
    if($a ==9){ запрос в бд со значением $a }
    if($a ==10){ запрос в бд со значением $a }

    Если $a будет равно 1, то в данном примере всё равно будет проверятся полследующие 9 if, а в случае switch-case такого не будет, выполнится break. Следовательно лучше использовать switch-case?
     
  2. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
  3. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    allowance
    мда*
    покажите реальный код
     
  4. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    allowance
    Псих?

    [sql]SELECT values
    FROM table
    WHERE field = {$a}
    [/sql]
    Нахер тут if\switch?
     
  5. allowance

    allowance Активный пользователь

    С нами с:
    19 янв 2010
    Сообщения:
    196
    Симпатии:
    0
    Padaboo
    Это теоретические размышления :)

    А если использовать так, то будет так же как и в switch-case?

    if($a ==1){ запрос в бд со значением $a }
    else if($a ==2){ запрос в бд со значением $a }
    else if($a ==3){ запрос в бд со значением $a }
    else if($a ==4){ запрос в бд со значением $a }
    else if($a ==5){ запрос в бд со значением $a }
    else if($a ==6){ запрос в бд со значением $a }
    else if($a ==7){ запрос в бд со значением $a }
    else if($a ==8){ запрос в бд со значением $a }
    else if($a ==9){ запрос в бд со значением $a }
    else if($a ==10){ запрос в бд со значением $a }
     
  6. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    allowance
    Работать будет одинаково, по этому что внешне больше нравится то и используй...
     
  7. allowance

    allowance Активный пользователь

    С нами с:
    19 янв 2010
    Сообщения:
    196
    Симпатии:
    0
    admyx
    Лишний запрос в БД! Было бы 100 $a то был бы смысл.
     
  8. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    allowance
    Написать 10 if \ case лучше, чем сделать один запрос к БД?
    Вперед, капитан Америка.
     
  9. allowance

    allowance Активный пользователь

    С нами с:
    19 янв 2010
    Сообщения:
    196
    Симпатии:
    0
    Vladson
    Именно эти варианты else if и switch-case будут работать одинаково?
     
  10. allowance

    allowance Активный пользователь

    С нами с:
    19 янв 2010
    Сообщения:
    196
    Симпатии:
    0
    admyx
    А если запрс в запросе получится?
    На хостинге бывает такая штука как лимит на кол-во одновременных соединений, слыхал о таком?
     
  11. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    мне вообще казалось, что количество соединений и количество запросов - разные вещи, или я ошибаюсь?
    я кеширую контент который генерируется при помощи большого количества запросов
     
  12. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    И что? Ой капец, сервер умер.
    [sql]SELECT a.id, a.login, b.group_title
    FROM users AS a, groups AS b
    WHERE a.group_id = b.id[/sql]

    У тебя что, на каждый запрос отдельное соединение создается?
    При чем здесь количество запросов и количество соединений?
    Что ты какую-то херню городишь?
     
  13. allowance

    allowance Активный пользователь

    С нами с:
    19 янв 2010
    Сообщения:
    196
    Симпатии:
    0
    max_user_connections - Определяет максимальное число одновременных подключений к БД.
    Я это имел ввиду.

    Как ты кешируешь? Если в запросе есть, скажем, переменная а не число, то mysql будет кешировать данный запрос.
     
  14. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Рад за тебя.
    Только какое отношение это имеет к обсуждаемой теме?
     
  15. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    allowance
    а я не сказал, что везде, только там где можно... и когда действительно много запросов и лень оптимизировать...
    http://www.php.ru/forum/viewtopic.php?p=235716#235716
    объект юзера со всеми параметрами и прочим у меня будет полностью серриализоваться в redis к примеру (или как то так)
     
  16. allowance

    allowance Активный пользователь

    С нами с:
    19 янв 2010
    Сообщения:
    196
    Симпатии:
    0
    admyx
    А ты всегда используешь один запрос на все задачи?
    Ну а кто про mysql начал говорить?
     
  17. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Но согласись, использовать switch для перебора, скажем, групп пользователя - бред.
     
  18. allowance

    allowance Активный пользователь

    С нами с:
    19 янв 2010
    Сообщения:
    196
    Симпатии:
    0
    admyx
    Бред если бы их было слишком много, а если 10 штук то я думаю, что это того стоит.
     
  19. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    allowance

    Так у тебя же дальше проверки на If не пойдет. Запрос только 1 выполнится хоть так хоть эдак.

    А свитч-кейс да, быстрее будет. На 0.0001 секунды