Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Не срабатывает условие в switch case
|
|||
|---|---|---|---|
|
#18+
Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. Выдает "match". Почему? Хочу обрабатывать несколько условий в case - как правильно это делать? Делать гору ифов взамен свичу не хочется ;( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2016, 00:10 |
|
||
|
Не срабатывает условие в switch case
|
|||
|---|---|---|---|
|
#18+
andrey10Почему?Суть switch...case - многократное сравнение переменной или выражения с различными значениями. В ряде случаев значения разных типов при выполнении некоторых операций приводятся к одному типу. Подробнее, например, в мануале . Что получается в данном случае. В выражении "('a' && true)" строка 'a' перед выполнением логического "И" будет преобразована в булево true и, как следствие, результатом выражения будет true. С этим true и будет сравниваться значение переменной $page. Перед сравнением строки 'b' с булевым значением, оная строка преобразовывается в булево true. Соответственно, результатом сравнения в первом case будет "истина". Как-то вот так получается. andrey10Хочу обрабатывать несколько условий в case - как правильно это делать?Не вполне понятно, что именно хотите. Покажите пример на if'ах. Возможно, желаемое и не получится. Ведь switch...case является лишь частным случаем if...elseif...else, но не 100% заменой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2016, 01:03 |
|
||
|
Не срабатывает условие в switch case
|
|||
|---|---|---|---|
|
#18+
andrey10, Сакральный смысл Код: php 1. не понял. Зачем раскладывать грабли на пустом месте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2016, 09:40 |
|
||
|
Не срабатывает условие в switch case
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответ. Провел еще пару тестов и обнаружил странность (по крайней мере для себя). Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Почему выдает 1? Ведь переменные $a и $b одного типа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2016, 14:52 |
|
||
|
Не срабатывает условие в switch case
|
|||
|---|---|---|---|
|
#18+
Модератор, удалите моё сообщение, а то мне стыдно что я такой баран. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2016, 14:53 |
|
||
|
Не срабатывает условие в switch case
|
|||
|---|---|---|---|
|
#18+
andrey10Почему выдает 1? Ведь переменные $a и $b одного типа.Результат сравнения ($b == 'q') есть булево значение безотносительно типа сравниваемых данных. Про остальное выше писал уже. andrey10удалите моё сообщение, а то мне стыдноДа нечего тут стыдиться. На этих примерах Вы разобрались, КАК эта штука работает и ПОЧЕМУ из такого подхода ничего толкового не получится. Особенности языка. Может, кому-то ещё придётся разобраться, пусть будет материал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2016, 15:40 |
|
||
|
Не срабатывает условие в switch case
|
|||
|---|---|---|---|
|
#18+
не знаю, что вы там хотите сделать, но можно вот так Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2016, 15:58 |
|
||
|
Не срабатывает условие в switch case
|
|||
|---|---|---|---|
|
#18+
SharuPoNemnogu, Вау, а вот это классное решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2016, 21:00 |
|
||
|
Не срабатывает условие в switch case
|
|||
|---|---|---|---|
|
#18+
Чем else if то не нравится? Зачем этот изврат? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2016, 01:22 |
|
||
|
Не срабатывает условие в switch case
|
|||
|---|---|---|---|
|
#18+
HettЧем else if то не нравится? Зачем этот изврат? Почему изврат? Вполне распространённое решение: то, что через switch (true) . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2016, 09:05 |
|
||
|
Не срабатывает условие в switch case
|
|||
|---|---|---|---|
|
#18+
Распространенное среди, извиняюсь, говнокодеров? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2016, 09:16 |
|
||
|
Не срабатывает условие в switch case
|
|||
|---|---|---|---|
|
#18+
HettРаспространенное среди, извиняюсь, говнокодеров? Нет. JavaScript и PHP разработчиков. Аргументы-то будут, или только эмоции? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2016, 09:22 |
|
||
|
Не срабатывает условие в switch case
|
|||
|---|---|---|---|
|
#18+
skyANAHettРаспространенное среди, извиняюсь, говнокодеров? Нет. JavaScript и PHP разработчиков. Аргументы-то будут, или только эмоции? :) У меня один аргумент, - это не нужное загромождение. Хотелось бы услышать Ваши аргументы в пользу такой конструкции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2016, 09:54 |
|
||
|
Не срабатывает условие в switch case
|
|||
|---|---|---|---|
|
#18+
HettskyANAпропущено... Нет. JavaScript и PHP разработчиков. Аргументы-то будут, или только эмоции? :) У меня один аргумент, - это не нужное загромождение. Хотелось бы услышать Ваши аргументы в пользу такой конструкции. Я не считаю это загромождением, или извратом, или говнокодом. Обычный switch со своими плюшками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2016, 10:03 |
|
||
|
Не срабатывает условие в switch case
|
|||
|---|---|---|---|
|
#18+
skyANA, так а можно ссылку увидеть на распространённость. я с разными фреймворками(пхп) работал и код до глубины дебагом изучал, и вот не втречал подобного. ЗЫ кстате - плюшка... я не разу не видел серьёзной статьи где бы чтото называлось плюшкой... согласись, это не серьёзное отношение к диалогу, в большинстве случаев, и точка зрения за этим стоит не серьёзная - но ты сдесь на форуме, человек серьёзный, поэтому таки хочется убедится что оно распространнено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2016, 10:20 |
|
||
|
Не срабатывает условие в switch case
|
|||
|---|---|---|---|
|
#18+
Единственный минус этого подхода, php switch (не помню как в js) использует не жесткое сравнение, и можно нарваться на кривую логику (как в случае ТС'а), именно поэтому я прописал ===. Что же касается распространенности, в нашем проекте я нашел 17 случаев использования в разном контексте, и выглядит это нагляднее (имхо), чем if elseif else из 5 штук ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2016, 11:12 |
|
||
|
Не срабатывает условие в switch case
|
|||
|---|---|---|---|
|
#18+
alex564657498765453skyANA, так а можно ссылку увидеть на распространённость. я с разными фреймворками(пхп) работал и код до глубины дебагом изучал, и вот не втречал подобного. ЗЫ кстате - плюшка... я не разу не видел серьёзной статьи где бы чтото называлось плюшкой... согласись, это не серьёзное отношение к диалогу, в большинстве случаев, и точка зрения за этим стоит не серьёзная - но ты сдесь на форуме, человек серьёзный, поэтому таки хочется убедится что оно распространнено. Например: PHP If Else and Switch Case А что касается плюшек, то перепишите на if-ы следующий код: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2016, 11:31 |
|
||
|
Не срабатывает условие в switch case
|
|||
|---|---|---|---|
|
#18+
skyANAalex564657498765453skyANA, так а можно ссылку увидеть на распространённость. я с разными фреймворками(пхп) работал и код до глубины дебагом изучал, и вот не втречал подобного. ЗЫ кстате - плюшка... я не разу не видел серьёзной статьи где бы чтото называлось плюшкой... согласись, это не серьёзное отношение к диалогу, в большинстве случаев, и точка зрения за этим стоит не серьёзная - но ты сдесь на форуме, человек серьёзный, поэтому таки хочется убедится что оно распространнено. Например: PHP If Else and Switch Case А что касается плюшек, то перепишите на if-ы следующий код: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. да переписать то не проблемма. и вопрос наглядности это вопрос привычки. для азиата их форма лица куда наглядней, чем для нас, нам они все на одно лицо по началу. речь ведь не о том. речь о - свитч, нужен когда у нас несколько равноправных вариантов (больше 2) и изначально речь шла в разных вариантах значения переменной ( в очень строгих языках вообще толко число или тип сводимый к числу.) даже в документации обычн опишут как if (<condition>) .... switch(<variable>) { case <value1> : <operator>;.... а предлагается, использовать свитч(вами предлагается) - не только как блок ветвления на основе значения ПЕРЕМЕННОЙ, а просто как блок ветвления. и вот возникает вопрос - насколько это распространенно. ибо если не очень, то подобный код автоматически иммеет минус в поддерживаемости, что люди будут видеть неожиданный трюк(плюшку). и думать ...что за емае. с другой стороны, вообще считается ветвление не должно быть сложным(делать одно из 10 действий на основе одного из возможных 10 значений переменной другой случай, хотя есть точка зрения свитч сам по себе не есть гуд. (логика проста, где 10 значений, там будет и 11, что постоянно дописывать код? нет, должно конфигурироватся.) также некоторые среды даже подсказывают - заменить свитч на иф., так сказать смелл код. понимаете, что я хочу допросится от вас? по феншую учат не делать сложных ветвлений, свитч для ветвления на основе значений переменной но это не очень хорошо, а вы мало того что говорите делать сложное ветвление, так есчё и способом нестандартным, через оператор который сам по себе критикуется слегка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2016, 14:43 |
|
||
|
Не срабатывает условие в switch case
|
|||
|---|---|---|---|
|
#18+
alex564657498765453, код можно переписать и проще - полный аналог отдельных ифов с одинарным спареным условием(через или) и вместо брика гоуту. для тех кто хочет чтото сказать по поводу гоуту - раслабтесь, свитч сам по себе серия гоуту, а брик так и подавно, то что вы этого не увидели сразу, не означает что его нет - опять же дело привычки. и если поспорить то поди гоуту КОНЕЦ_ВЕТВЛЕНИЯ; ....... ....... :КОНЕЦ_ВЕТВЛЕНИЯ; куда более понятен, чем брик, и листай по коду не запутайся в отступах и найди или пусть идешка подскажет, где же та заветная закрывающаяся скобка, куда мы попадём - но соглашусь - сегоня использовать гоуту, это способ заставить среднего програмиста переписать хороший код на свой средний(напугать). базовое использование гоуту - это сегодня вызов подпрограммы(функции) ...но мы не про гоуту. а про свитсч, прост упомянул, что ифы тоже могут быть без дублирования условия, если использовать скачок - просто для свитча он есть, а для ифа брика нету, для ифа прышки делаются через гоуту ...но как я и сказал выше - базовый феншуй - избегать сложного ветвления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2016, 14:50 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=39296322&tid=1460957]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
45ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 226ms |
| total: | 340ms |

| 0 / 0 |
