Foros del Web » Programando para Internet » PHP »

switch bizarro

Estas en el tema de switch bizarro en el foro de PHP en Foros del Web. Hola! Resulta que el siguiente switch ejecuta todos los case que le siguen a partir de la 1º coincidencia. El campo puntaje varia de 1 ...
  #1 (permalink)  
Antiguo 08/04/2009, 13:29
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 16 años, 4 meses
Puntos: 35
switch bizarro

Hola!
Resulta que el siguiente switch ejecuta todos los case que le siguen a partir de la 1º coincidencia.
El campo puntaje varia de 1 a 5
Código PHP:
switch(round($row['puntaje'])){
   case 
'1': echo 'Uno';
   case 
'5': echo 'Cinco';

Si vale 1 me muestra UnoCinco en el html, tuve que usar break para que funcione correctamente.
Pero porque ejecuta el case 5?? ya que no existe coincidencia
  #2 (permalink)  
Antiguo 08/04/2009, 13:36
Avatar de Synkronice  
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 831
Antigüedad: 17 años, 1 mes
Puntos: 48
Respuesta: switch bizarro

Cuando no pones break ese switch es como decir

Código PHP:
if(round($row['puntaje']) == '1' || round($row['puntaje']) == '5')
{
  echo 
'Uno';
  echo 
'Cinco';

Saludos!
  #3 (permalink)  
Antiguo 08/04/2009, 13:40
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: switch bizarro

Cita:
Iniciado por doylelives Ver Mensaje
[...] Pero porque ejecuta el case 5?? [...]
tal ves por que haces el switch() incorrectamente???

Código PHP:
switch (/* ... */)
{
  case 
1: echo 'Uno'; break;
  case 
5: echo 'Cinco'; break;

  default: break;

http://php.net/switch

__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 08/04/2009, 14:01
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 16 años, 4 meses
Puntos: 35
Respuesta: switch bizarro

Bueno en C debe coincidir si o si para ejecutar el case.
Gracias!!
  #5 (permalink)  
Antiguo 08/04/2009, 14:14
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: switch bizarro

El problema es que no haces break;
Por lo tanto al encontrar una coincidencia, no hay nada que le diga al código donde termina el case y sigue de largo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:15.