Foros del Web » Programando para Internet » PHP »

Switch con valores mixtos

Estas en el tema de Switch con valores mixtos en el foro de PHP en Foros del Web. Hola... Necesito hacer un switch de una variable... y esta variable puede contener valores numéricos o cadenas de texto cortas (de 1 sólo carácter). Código ...
  #1 (permalink)  
Antiguo 20/05/2011, 09:17
Avatar de Alvaro_Franz  
Fecha de Ingreso: mayo-2011
Mensajes: 84
Antigüedad: 13 años, 7 meses
Puntos: 4
Switch con valores mixtos

Hola... Necesito hacer un switch de una variable... y esta variable puede contener valores numéricos o cadenas de texto cortas (de 1 sólo carácter).

Código PHP:
                    switch($cont){
                    case 
0//game
                    
echo '<a href="/juegos/' $cont_id '/' convertir_seo($cont_assoc['nombre']) . '">' stripslashes($cont_assoc['nombre']) . '</a>';
                    break;
                    case 
"v"//video
                    
$video=explode("_",$cont_id,2);
                    echo 
'<a href="/videos/' $video[1] . '">' stripslashes($cont_assoc['name']) . '</a>';
                     switch(
$video[0]){
                      case 
0//yt
                      
echo " - (Youtube)";
                      break;
                     } 
El problema es que cuando adquiere valor "v".. No se ejecuta la sentencia... El resto sí.
¿Qué puede ser?
  #2 (permalink)  
Antiguo 20/05/2011, 09:23
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 15 años, 5 meses
Puntos: 641
Respuesta: Switch con valores mixtos

pues te falta cerrar bien tu código

Código PHP:
switch ($cont) {
    case 
0//game
        
echo '<a href="/juegos/' $cont_id '/' convertir_seo($cont_assoc['nombre']) . '">' stripslashes($cont_assoc['nombre']) . '</a>';
        break;
    case 
"v"//video
        
$video explode("_"$cont_id2);
        echo 
'<a href="/videos/' $video[1] . '">' stripslashes($cont_assoc['name']) . '</a>';
        switch (
$video[0]) {
            case 
0//yt
                
echo " - (Youtube)";
                break;
        }

y luego haces un switch anidado con un solo valor, lo cual no tiene mucho sentido
seria mejor un if($video[0] == 0), y habria que ver que el explode lo realize bien, pues no se ve que valor tenga $cont_id
  #3 (permalink)  
Antiguo 20/05/2011, 09:44
Avatar de Alvaro_Franz  
Fecha de Ingreso: mayo-2011
Mensajes: 84
Antigüedad: 13 años, 7 meses
Puntos: 4
Respuesta: Switch con valores mixtos

Hola... en realidad esa es solo una parte del código, ese switch contendrá futuros valores numéricos de 0 a 99.

He encontrado la solución en un foro en inglés. Al parecer si se mezclan valores enteros con cadenas en un switch, debemos tener cuidado con el valor 0.

Si dejamos el valor 0 acecas, sin rodearlo de comillas... PHP enternderá nuestra cadena de texto como 0, y se la saltará.

Para hacer funcionar la mezcla de valores es necesario colocar comillas en el valor numérico 0, sólo en este... el resto de enteros no es necesario.. quedando así.

Código PHP:
switch($var){
case 
'0':
echo 
"es cero";
break;
case 
"hola":
echo 
"es un saludo";
break;
case 
1:
echo 
"Es el número 1, grande!";
break;

Espero que le sirva a alguien... Un saludo. Gracias.

Etiquetas: switch
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 14:18.