¿Están permitidos los regex en las sentencias de cambio/caso de PHP y cómo usarlos?regexp en la instrucción switch
Respuesta
declaración switch de los casos funciona como si- elseif.
Además de usar regex para if-elseif, también puede usarlo en la caja del conmutador.
if (preg_match('/John.*/', $name)) {
// do stuff for people whose name is John, Johnny, ...
}
se pueden codificar como
switch $name {
case (preg_match('/John.*/', $name) ? true : false) :
// do stuff for people whose name is John, Johnny, ...
break;
}
Espero que esto ayude.
Esto solo funciona cuando '$ name' se evalúa como' true'. Si '$ name == ''' esto arrojará resultados incorrectos. -1 – NikiC
@nikic: tienes razón, pero esto responde a la pregunta del OP: '¿Están permitidas las expresiones regulares en las declaraciones del interruptor/caso de PHP y cómo usarlas?' –
Me tomó un tiempo entender por qué funciona esto. Y creo que es un hack feo. La clave es que las "más" cadenas validan a verdadero. Y la respuesta a la pregunta sería: funciona, la mayoría de las veces. – Ezequiel
Sí, pero debe utilizar esta técnica para evitar problemas cuando el interruptor de argumentos evals a false
:
switch ($name) {
case preg_match('/John.*/', $name) ? $name : !$name:
// do stuff
}
Gracias por su respuesta. Si lo entiendo bien, puedo hacer 'preg_match ("/regex/", $ foo)? true: falso; '. ¿No puedo? – Toto
El primer ejemplo en esta respuesta es mejor que todas las demás respuestas porque siempre coincidirá (o no) correctamente con el asunto del 'interruptor()', mientras que devolver verdadero o falso desde el ternario 'preg_match()' podría ser inesperado resultados, como en el ejemplo de cadena vacía de @ NikiC. – Michael
ninguna o sólo limitada. Usted podría, por ejemplo, el interruptor de true
: (., Por ejemplo, caer a través)
switch (true) {
case $a == 'A':
break;
case preg_match('~~', $a);
break;
}
Básicamente, esto le da una declaración if-elseif-else
, pero con la sintaxis y la fuerza de switch
- 1. ¿Cómo funciona la instrucción switch?
- 2. instrucción switch php dentro de otra instrucción switch
- 3. PHP switch() instrucción
- 4. operadores booleanos en una instrucción switch?
- 5. Cuándo utilizar una instrucción switch en Java
- 6. Obtener la lista de casos en la instrucción switch
- 7. Lanzar NotImplementedException en el caso predeterminado en la instrucción switch
- 8. donde poner break en la instrucción switch/case con bloques
- 9. usando la colección de cadenas en una instrucción switch
- 10. ¿Cómo usar la instrucción switch en las funciones R?
- 11. Java: usando la instrucción switch con enum bajo la subclase
- 12. ¿La sintaxis de jade admite una instrucción switch?
- 13. ¿La instrucción switch puede tener más de una variable?
- 14. Uso de una instrucción Switch en Obj-C
- 15. ¿Cuándo se declaran las referencias en una instrucción switch?
- 16. ¿Es posible hacer lo siguiente en una instrucción Switch - C++?
- 17. Puede/Debe arrojar excepciones en una instrucción C# switch?
- 18. Emacs sangría de descanso después de instrucción switch
- 19. Java 7 Switch de cadena descompilado: instrucción inesperada
- 20. ¿Cuál es el alcance de la variable JavaScript en una instrucción switch/case?
- 21. ¿Cuál es la sintaxis de powershell para valores múltiples en una instrucción switch?
- 22. cómo se usa un valor enum en una instrucción switch en C++
- 23. ¿Cómo puedo usar goto en una instrucción switch en Objective-C?
- 24. ¿Cuál es la complejidad del tiempo de ejecución de una instrucción switch?
- 25. cómo establecer una instrucción switch en el ciclo while en java
- 26. switch/case dentro de un switch/case
- 27. sentencia switch en LINQ
- 28. ¿Hay una plantilla o algo para generar una instrucción switch para Java enum en Eclipse?
- 29. ¿Por qué no puedo usar un NSInteger en una instrucción switch?
- 30. ¿Por qué falla una instrucción switch en una cadena cuando el valor proviene de ViewBag?
¿Puede aclarar esto dando un ejemplo de lo que está tratando de lograr? – Adam