2012-02-13 10 views
6

estoy depuración algo de código para un cliente y se encontró la siguiente sintaxis:Semi-colon después de un caso válido en una declaración de cambio de PHP?

switch ($i) { 
    case 0; 
     echo "i equals 0"; 
     break; 
    case 1; 
     echo "i equals 1"; 
     break; 
    case 2; 
     echo "i equals 2"; 
     break; 
} 

declaraciones El caso terminan en punto y coma en lugar de dos puntos. Resulta que esto se compila, pero ¿es legítimo? Nunca he visto esa sintaxis antes.

+1

@LeviMorrison no, no lo harás. Aquí no hay una lógica subyacente que pueda ser comprendida racionalmente; PHP simplemente permite arbitrariamente un punto y coma después de un caso en lugar de dos puntos por alguna razón. La misma sintaxis es un error en C. –

Respuesta

12

Desde el documentation:

Es posible utilizar un punto y coma en lugar de dos puntos después de un caso como:

switch($beer) 
{ 
    case 'tuborg'; 
    case 'carlsberg'; 
    case 'heineken'; 
     echo 'Good choice'; 
    break; 
    default; 
     echo 'Please make a new selection...'; 
    break; 
} 
-2

Sí, con tal de que $i tiene un valor numérico

+0

No, funcionará de todos modos. 'true' = 1; 'false' = 0; '" cadena "' = 0; Solo '$ i = array ('algo')' no imprimirá nada. Pero no dará ningún error en absoluto. – Shoe

+0

Bueno, debería haber estado un poco adelantada con eso, estaba implicando que puede ser una cadena o un valor int que se pasa. Perdón por mi pobre elección de palabras =) – Eli

+0

En realidad funciona con todo, incluso 'NULL'. Con nul o un '$ i' no establecido imprimirá 0. – Shoe

-1

Como puedes comprobar aquí, funciona: http://codepad.org/hOLQP98D creo que funciona porque cae en

+0

-1; esto no tiene nada que ver con la caída. Solo se te permite usar un punto y coma en lugar de dos puntos después de un caso, porque por alguna razón los desarrolladores de PHP decidieron hacerlo de esa manera. –

Cuestiones relacionadas