1 / 1 / 0
Регистрация: 16.01.2018
Сообщений: 10
|
|||||||||||||||||||||
1 | |||||||||||||||||||||
SWITCH07.10.2021, 14:25. Показов 1205. Ответов 15
Столкнулся с такой проблемой:
Получаю данные с помощью апи от телеграма, вся работа с текстом проходит на ура, но когда нужно разорвать и по определенным критерия провести индексацию код ниже:
А вот ответа от скрипта нету, ошибок PHPstorm не выдает, хостинг так же не показывает никаких ошибок, возможно что в ветвлении switch нельзя использовать preg_match?
Нашел решение, в кейсе при проверке добавляем
MyEnglish = -1; Кто разбирается, объясните пожалуйста, и не кидайте тапками, я только учусь.
0
|
07.10.2021, 14:25 | |
Ответы с готовыми решениями:
15
Радио группа и Switch Изменить case в switch «Оператор выбора (switch case) в php» Не пойму странную логику работы switch в цикле |
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
|
|
07.10.2021, 14:40 | 2 |
Следовательно, тело этого case выполнится только при $text равной 0 (нулю) или другому значению, которое при приведении типов сможет стать нулём. Добавлено через 3 минуты При приведении типа к bool заполненная строка приведётся к true (если в ней не одна цифра -- ноль), поэтому условие выполнится, если preg_match вернёт 1.
1
|
1 / 1 / 0
Регистрация: 16.01.2018
Сообщений: 10
|
|||||||||||
07.10.2021, 14:42 [ТС] | 3 | ||||||||||
0
|
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
|
|
07.10.2021, 14:43 | 4 |
Выше дополнил сообщение, гляньте.
1
|
1 / 1 / 0
Регистрация: 16.01.2018
Сообщений: 10
|
||||||
07.10.2021, 14:43 [ТС] | 5 | |||||
По сути, как я понял из последнего сообщения,
0
|
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
|
||||||
07.10.2021, 15:13 | 6 | |||||
Нет. Приведение типов производится самим PHP при сравнении, скажем, bool-значения со строкой.
Смотрите. Когда не было указано этих true/false и preg_match возвращал единицу, то в case значение переменной $text сравнивалось с единицей. А когда строка, не начинающаяся с единицы сравнивается с единицей, условие не выполнится, будет false. А когда вы указали true/false, при возврате функцией preg_match единицы в case значение переменной $text сравнивается уже с true, а не с единицей. А любая заполненная строка, не равная нулю, при сравнении с bool становится "true". Добавлено через 19 минут Добавлю: решение это так себе... Работает оно вопреки здравому смыслу. Т.е. весь блок switch работает на сравнение $text с определённым значением. А в данном case мы делаем проверку той же переменной вне switch, заставляя затем switch сравнивать строку с bool. В общем, тут тонкая грань. Лучше было бы такую проверку делать в отдельном if или переделать switch вот так:
0
|
193 / 140 / 36
Регистрация: 19.11.2020
Сообщений: 881
|
|
07.10.2021, 17:45 | 7 |
0
|
1 / 1 / 0
Регистрация: 16.01.2018
Сообщений: 10
|
|
08.10.2021, 10:43 [ТС] | 8 |
Странное суждение, дико интересно. Вы сразу пришли в программирование мультипрофессионалом? И уже в первые дни писали проекты на уровне сеньёра? Если нет, и вам нечем помочь в этой теме, пожалуйста не пишите ерунду.
1
|
193 / 140 / 36
Регистрация: 19.11.2020
Сообщений: 881
|
|
08.10.2021, 15:15 | 9 |
Причём тут программирование ? Тут логика нужна. Если человек не может разработать свою логику, то ему практически нигде нет места. Почему у вас нет логики? Потому что вы логически не можете подумать, что логику надо разбить на 2 этапа. Первый этап, когда вы разбиваете принятия команд, а второй этапа (В данном случае в switch - default) обработка ввода текста пользователя. Вы же, прекрасно понимаете что, switch это оператор выбора case, пытаетесь туда засунуть проверку, заставляя имитировать работу else - if Добавлено через 2 минуты Если вы на бумажке не можете представить себе, как это может логически работать. То как раз таки, это первый путь, не программировать.
0
|
Jodah
|
08.10.2021, 16:19
#10
|
0
|
193 / 140 / 36
Регистрация: 19.11.2020
Сообщений: 881
|
|
08.10.2021, 16:20 | 11 |
Да, было актуально во времена Джобса. Когда не было нормального интернета. И не было книжек. Ибо толстосумы ещё не написали свои тома. А те что были, были составлены людьми, которые только познавали - только изобретённый мир программирования.
Да и в добавок, япы были все сложные на тот момент. А пыха - самый лёгкий язык на свете. Мне кажется даже человек с 6 видом обучения, сможет на нём писать.
0
|
68 / 60 / 18
Регистрация: 03.12.2010
Сообщений: 365
|
|
08.10.2021, 17:17 | 12 |
Сообщение было отмечено Yaroslav_Fil как решение
Решение
Я вам больше скажу, если программист сам себя не развивает, то у него может быть хоть 10 лет стажа, а лучше писать он не станет.
1
|
1 / 1 / 0
Регистрация: 16.01.2018
Сообщений: 10
|
|
11.10.2021, 15:53 [ТС] | 13 |
Именно поэтому чтобы развиваться я пришел на форум и задаю вопросы, ради того чтобы понять где и в чем я ошибаюсь. Стажа как такого в программировании 0, и нету человека в реальном виде чтобы подойти и поговорить почему так а почему эдак, а "уважаемые" пользователи форума пытаются, размахивать молотком по молодым умам требующим объяснения, с пеной у рта доказывать что "Я прекрасен - А ВЫ ОЛЕНИ все"
0
|
193 / 140 / 36
Регистрация: 19.11.2020
Сообщений: 881
|
|
11.10.2021, 16:36 | 14 |
Но по итогу тебе не объясняют конкретно что так делать не надо, а насовывают портянки того, как твоя идея может работать
Что, тролли подъехали ?
0
|
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
|
|
11.10.2021, 16:47 | 15 |
0
|
68 / 60 / 18
Регистрация: 03.12.2010
Сообщений: 365
|
|
11.10.2021, 16:47 | 16 |
Умение различать, где тебе подсказывают не верно и где подсказывают верно, но ты сам ещё этого не понял. Вот главный признак обучаемости.
На самом деле ваша задача очень простая. Вы спрашивали про switch и case, и вам сразу сказали о том, что можно переделать в if По большей части это одно и тоже. Различие в том, что вам не нужно писать каждый раз сравнение. Матчасть про Switch-Case Посмотрите первый пример и всё станет понятно. Можно переписать все ваши кейсы на if-ы и там уже дебажить с мыслью "почему не заходит в этот if?"
0
|
11.10.2021, 16:47 | |
11.10.2021, 16:47 | |
Помогаю со студенческими работами здесь
16
Как воспроизвести файл в формате flv на своём сайте по условию switch - case? Поместить switch в switch Switch в switch-е Из If/else в switch/case Header и switch Не работает switch Foreach switch Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |