| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Как изменить if на switch |
| Автор: djundead 23.3.2007, 23:29 | ||
| Доброго времени суток! Есть примерно следующая конструкция:
Дело в том что ключей около 20 штук и собственно if'ов тоже столько же( попытался перенести это дело на switch, но не смог найти решения при использовании in_array // поиска ключа в массиве. Покажите в какую сторону двигаться для нахождения решения (если это конечно возможно =) ) Заранее спасибо! |
| Автор: Serkys 23.3.2007, 23:45 | ||
Лучше сделай через foreach().
Если надо выполнять разные действия, то switch($key) вставляешь внутрь if(). Хотя хотелось бы задачу подробнее. |
| Автор: Nicholas_S 23.3.2007, 23:46 |
| Опиши задачу подробнее. Вообще достаточно странно, что данная конструкция работает, если под значением "ключX" понимается именно ключ ассоциативного массива, а не значение, которое требуется найти. |
| Автор: djundead 24.3.2007, 00:01 | ||||||||
массив формируется из запроса к бд с применением explode:
в итоге ищу по массиву значение:
Задача присвоить юзеру определенные метки в зависимости от выбранных им предпочтений
Нет) Значение, просто немного стормозил =( И еще вопрос, есть ли смысл переходить на switch? На сколько и главное чем полезнее использовать switch? |
| Автор: Serkys 24.3.2007, 00:58 |
Код красивее Мне кажется switch полезен когда выбор идёт опираясь на само значение переменной, без всяких его преобразований. Можете меня пиннать, но я не вижу ничего некрасивого во ифах. Свич очень узкоспециализированный, чтобы его подстроить под себя почти всегда надо прилагать слишком много усилий. |
| Автор: szz 24.3.2007, 06:44 | ||||||
Нету! Что тебе вообще свитч тут взъелся? Он подходит если ты откровенно сравниваешь переменную с разными значениями. 20 раз писать эту хрень тоже нет смысла, когда у тебя очевидно циклично можно пройти. разумеется тут нужен foreach, как подсказал Serkys. Вот тот же цикл, но с действием. После него результтат абсолютно такой же как и с 20-ю ифами:
Не, ну это неправда тоже. Довольно часто приходится сравнивать переменную с чем-то. Если сравнений больше двух, то не задумываясь используешь свитч. |
| Автор: mclight 24.3.2007, 10:15 | ||
если уж так хочется поюзать switch,то
|
| Автор: SelenIT 25.3.2007, 11:36 |
| По-моему, тут вообще можно заюзать http://php.net/array_intersect($массив_для_сравнения, $массив_из_базы) и потом смело фигачить все элементы из результата в эти самые предпочтения многострадального юзера, обойдясь без каких-либо проверок внутри цикла. А вот это имхо, говорит о слегка неправильном проектировании БД (нормализация хромает)... |