2012-05-19 20 views
5

que tienen como estructura de control:¿Hay alguna forma en php para hacer que SWITCH opreator compare casos estrictamente?

switch ($var) { 
    case TRUE: 
    break; 

    case FALSE: 
    break; 

    case NULL: 
    break; 
} 

Y mi caso NULL Nunca se invoca porque como he encontrado en el manual de php:

Tenga en cuenta que el interruptor/caja hace suelta comparación.

Sé que puedo utilizar en lugar de IFSWITCH pero no me gustaría, ya algunos IF's tener en cada CASE de mi SWITCH.

¿Hay alguna manera de reescribir de alguna manera SWITCH o utilizar algunos trucos para que sea más estricto?

Respuesta

7

sí, se puede hacer

switch (true) { 
    case $var === TRUE: 
    break; 

    case $var === FALSE: 
    break; 

    case $var === NULL: 
    break; 
} 
+0

gran solución, gracias . ¿Pero hace que php evalúe cada CASE cada vez? – Green

+2

@Green Es exactamente lo mismo que con cada instrucción switch: se ingresa el primer caso que se evalúa como verdadero y la ejecución se detiene en la primera declaración break –

0

Así funciona la construcción del interruptor: no hay mucho que pueda hacer al respecto.

La única forma que veo es hacer algunas modificaciones al código fuente de PHP y recompilarlo; pero, entonces, no estaría funcionando "PHP" más (y su código se basaría en otra cosa que no sea "PHP")

Cuestiones relacionadas