Разрешено ли регулярное выражение в операторах switch/case PHP и как их использовать?regexp в операторе switch
ответ
переключателя-саз работает как обсуж- дается ElseIf.
Как вы можете использовать regex для if-elseif, вы также можете использовать его в случае с переключателем.
if (preg_match('/John.*/', $name)) {
// do stuff for people whose name is John, Johnny, ...
}
может быть закодирован как
switch $name {
case (preg_match('/John.*/', $name) ? true : false) :
// do stuff for people whose name is John, Johnny, ...
break;
}
Надеется, что это помогает.
Это работает только тогда, когда '$ name' оценивает значение' true'. Если '$ name == ''' это приведет к неправильным результатам. -1 – NikiC
@nikic: вы правы, но это отвечает на вопрос OP: «Разрешено ли регулярное выражение в операторах PHP/case и как их использовать?» – 2010-10-29 18:26:56
Потребовалось некоторое время, чтобы понять, почему это работает. И я думаю, что это уродливый взлом. Ключ состоит в том, что строки «most» подтверждают true. И ответ на вопрос будет: он работает, в большинстве случаев. – Ezequiel
Да, но вы должны использовать эту технику, чтобы избежать проблем, когда переключатель аргумент Evals в false
:
switch ($name) {
case preg_match('/John.*/', $name) ? $name : !$name:
// do stuff
}
Спасибо за ваш ответ. Если я хорошо понимаю, я могу сделать 'preg_match ("/regex/", $ foo)? true: false; '. Разве я не могу? – Toto
Первый пример в этом ответе лучше, чем все остальные ответы, потому что он всегда будет правильно соответствовать (или нет) объекту 'switch()', тогда как возвращение true или false из 'preg_match()' trernary может иметь неожиданный результаты, как в примере с пустой строкой @ NikiC. – Michael
Нет или только ограниченным. Вы могли бы, например, переключатель для true
: (. Например обходя переход)
switch (true) {
case $a == 'A':
break;
case preg_match('~~', $a);
break;
}
В основном это дает вам if-elseif-else
заявления, но с синтаксисом и мощью switch
- 1. Конструктор RegExp в операторе switch
- 2. Условие в операторе switch
- 3. Петли в операторе Switch
- 4. && и || в операторе switch
- 5. Использование setText в операторе switch
- 6. Java - nextLine(); в операторе switch
- 7. Поведение fallout в операторе switch
- 8. Использование UIColor в операторе switch
- 9. Использование struct в операторе switch
- 10. C: выход в операторе switch
- 11. Использование наборов в операторе «switch»
- 12. Использовать флажок в операторе switch
- 13. Нечетное поведение в операторе switch
- 14. Изменение изображения в операторе switch
- 15. Список переменных в операторе switch
- 16. Параметр Функция в операторе switch в C++
- 17. C Операция с указателем в операторе switch
- 18. Javascript игнорируя переменную в операторе switch
- 19. Недопустимое значение аргумента символа в операторе switch
- 20. Как использовать несколько случаев в операторе switch
- 21. PowerShell Get-Date в операторе switch
- 22. проверка активных $ state в операторе switch
- 23. @noinspection annotation cruft cleanup в операторе switch
- 24. Использование типа перечисления в операторе switch
- 25. Ошибка цифрового сравнения в операторе switch
- 26. Если оператор else в операторе switch
- 27. Константное выражение, требуемое в операторе switch
- 28. с использованием набора строк в операторе switch
- 29. Как использовать переменную в операторе switch * updated *
- 30. Несколько переменных в операторе switch-case
Можете ли вы прояснить это, представив пример того, что вы пытаетесь выполнить? – Adam