Foros del Web » Programando para Internet » PHP »

No me funciona el switch.

Estas en el tema de No me funciona el switch. en el foro de PHP en Foros del Web. Hola a todos, Pongo el código primero, Código PHP: <?             switch ( $Marca [ 0 ])           {               case ( "A"  ||  "B"  ||  "C"  ||  "D"  ...
  #1 (permalink)  
Antiguo 17/05/2007, 11:08
 
Fecha de Ingreso: septiembre-2004
Ubicación: Gran Canaria
Mensajes: 89
Antigüedad: 19 años, 6 meses
Puntos: 0
No me funciona el switch.

Hola a todos,

Pongo el código primero,

Código PHP:
<? 
          
switch ($Marca[0])
          {
              case (
"A" || "B" || "C" || "D" || "E" || "F"):
                
$gal "GaleriasA-F.php";
                break;                
            case (
"G" || "H" || "I" || "J" || "K" || "L"):
                
$gal "GaleriasG-L.php";        
                break;        
            case (
"M" || "N" || "O" || "P" || "R" || "S"):
                
$gal "GaleriasM-S.php";            
                break;    
            case (
"T" || "U" || "V" || "W" || "Y" || "Z"):
                
$gal "GaleriasT-Z.php";
                break;                
          }        
?>
El caso es que $gal siempre tiene el valor GaleriasA-F.php, y si no pongo el primer case, el valor que toma es el sieguiente (GaleriasG-L.php),etc... Alguien me puede decir pq?....he probado comillas simples, dobles, sin comillas, sin paréntesis.....ya no se que puede ser. El valor de $Marca es un string, y $Marca[0] lo que hace es coger la primera letra de la palabra. A ver si alguien puede ayudarme por favor.

Gracias
  #2 (permalink)  
Antiguo 17/05/2007, 11:23
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años
Puntos: 33
De acuerdo Re: No me funciona el switch.Ayuda?

Pues por lo que tengo entendido case no permite operadores || o &&

Esto se hace de la siguiente manera


Código PHP:
switch($var)
{
   case 
'a':
   case 
'b':
     print 
1;
     break;
   case 
'c':
   case 
'd':
     print 
1;
     break;
}
//Y pues entonces en el caso de que la opción sea 'a' o 'b' ejecute tu bloque<br /> de código y asi para todos aquellos casos que necesites 
Saludillos
  #3 (permalink)  
Antiguo 17/05/2007, 11:35
 
Fecha de Ingreso: septiembre-2004
Ubicación: Gran Canaria
Mensajes: 89
Antigüedad: 19 años, 6 meses
Puntos: 0
Re: No me funciona el switch.Ayuda?

Aha.....yo por ahi he visto como mucho un operador, es decir, case (a || b), pero quizas con varios esto se vuelve loco. Ok pues, lo intentare como dices a ver que sale.

Muchas Gracias.
  #4 (permalink)  
Antiguo 17/05/2007, 11:38
Avatar de gerson  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 481
Antigüedad: 19 años, 1 mes
Puntos: 4
Re: No me funciona el switch.Ayuda?

Hola Sanbasil, esto tambien puede ayudarte:
Código PHP:
if(eregi("[A-F]",$Marca[0])){ $gal "GaleriasA-F.php";}
if(
eregi("[G-L]",$Marca[0])){ $gal "GaleriasG-L.php";}
if(
eregi("[M-S]",$Marca[0])){ $gal "GaleriasM-S.php";}
if(
eregi("[T-Z]",$Marca[0])){ $gal "GaleriasT-Z.php";} 
Saludos
__________________

  #5 (permalink)  
Antiguo 17/05/2007, 11:44
 
Fecha de Ingreso: septiembre-2004
Ubicación: Gran Canaria
Mensajes: 89
Antigüedad: 19 años, 6 meses
Puntos: 0
Re: No me funciona el switch.Ayuda?

Pues muchas gracias a los dos, las dos posibilidades me funcionan . Ya vere cual uso, esta última parece muy elegante

Gracias!!!
  #6 (permalink)  
Antiguo 17/05/2007, 11:47
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 9 meses
Puntos: 88
Re: No me funciona el switch.Ayuda?

otra opcion
Código PHP:
if(eregi("[A-F]",$Marca[0]){$gal "GaleriasA-F.php";}
elseif(
eregi("[G-L]",$Marca[0])){$gal "GaleriasG-L.php";}
elseif(
eregi("[M-S]",$Marca[0])){$gal "GaleriasM-S.php";}
else{
$gal "GaleriasT-Z.php";} 
basado en el de gerson

saludos
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
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 22:38.