Foros del Web » Programando para Internet » PHP »

Problema con un switch sencillo

Estas en el tema de Problema con un switch sencillo en el foro de PHP en Foros del Web. Saludos Masters. Tengo un switch normal.... Código PHP: if( $var1  != "0" )     {        switch ( $var2 )            {                case  "A" : $var3 = "cadena" ; ...
  #1 (permalink)  
Antiguo 05/06/2012, 11:00
 
Fecha de Ingreso: julio-2005
Ubicación: Boyoliso
Mensajes: 661
Antigüedad: 18 años, 8 meses
Puntos: 0
Sonrisa Problema con un switch sencillo

Saludos Masters. Tengo un switch normal....

Código PHP:
if($var1 !="0")
    {
       switch (
$var2)
           { 
              case 
"A":$var3="cadena";brake;
              case 
"B":$var3="cadena";brake;
              case 
"C":$var3="cadena";brake;
           }
        require_once(
"archivo.php");
     } 
Y mi problema es que si '$var2' es igual a "D", "E" o cualquier otro valor diferente de los especificados, el 'require_once' igual se está ejecutando.

Cómo podría hacer ahí para que este 'require_once' se ejecute SI Y SOLO SI $var2 es igual al valor dado en los 'case'?

Agradezco cualquier ayuda.
  #2 (permalink)  
Antiguo 05/06/2012, 11:02
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Problema con un switch sencillo

Código PHP:
Ver original
  1. if($var1 !="0")   {
  2.        switch ($var2){
  3.               case "A":$var3="cadena"; require_once("archivo.php");break;
  4.               case "B":$var3="cadena"; require_once("archivo.php");break;
  5.               case "C":$var3="cadena"; require_once("archivo.php");break;
  6.             }
  7.          
  8. }
  #3 (permalink)  
Antiguo 05/06/2012, 11:07
 
Fecha de Ingreso: julio-2005
Ubicación: Boyoliso
Mensajes: 661
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: Problema con un switch sencillo

Gracias por responder. Eso es lo que exáctamente quería evitar. Esta lista de 'cases' es bien larga, y no quería tener que llamar el 'require_once' todas las veces, sino una sola vez al final dependiendo del 'case'. Sabes si hay alguna forma? Gracias
  #4 (permalink)  
Antiguo 05/06/2012, 11:12
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Problema con un switch sencillo

Bueno, si sólo tienes tres posibles casos, con un if. Por cierto, el código me parece bastante corto, al menos comparado con algunas aplicaciones realmente complejas.
Código PHP:
Ver original
  1. if($var1 !="0")
  2.    if($var2=='A' or $var2=='B' or $var2=='C'){
  3.         $var3="cadena";
  4.         require_once("archivo.php");
  5.    }
  #5 (permalink)  
Antiguo 05/06/2012, 11:34
 
Fecha de Ingreso: julio-2005
Ubicación: Boyoliso
Mensajes: 661
Antigüedad: 18 años, 8 meses
Puntos: 0
De acuerdo Respuesta: Problema con un switch sencillo

Gracias. En ese caso no me serviría ya que el valor de la cadena que se la agrega a $var3 varía dependiendo del valor de $var2, no siempre es la misma. Yo creo que me va tocar poner un condicional antes del 'switch' con todas las mismas variables...

Código PHP:
if($var1 !="0")
{
    if(
$var2=="A" || $var2=="B" || $var2=="C")
       {
            switch (
$var2)
               { 
                 case 
"A":$var3="cadena";brake;
                 case 
"B":$var3="cadenas";brake;
                 case 
"C":$var3="cadenita";brake;
                }
              require_once(
"archivo.php");
              
funcion("$var3");
       }

Se me hace un poco ineficiente teniendo en cuenta que $var2 podría tener miles de posibilidades, pero es lo único que se me ocurre por el momento. Vamos a ver si funciona.
  #6 (permalink)  
Antiguo 05/06/2012, 14:49
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Problema con un switch sencillo

Puedes usar un flag:
Código PHP:
Ver original
  1. if($var1 !="0")
  2.     {
  3.        $bInclude = false;
  4.        switch ($var2)
  5.            {
  6.               case "A":$var3="cadena";$bInclude=true;break;
  7.               case "B":$var3="cadena";$bInclude=true;break;
  8.               case "C":$var3="cadena";$bInclude=true;break;
  9.            }
  10.           if ($bInclude) require_once("archivo.php");
  11.      }

Saludos.
  #7 (permalink)  
Antiguo 05/06/2012, 16:59
 
Fecha de Ingreso: junio-2012
Ubicación: Argentina - Buenos Aires
Mensajes: 135
Antigüedad: 11 años, 10 meses
Puntos: 32
Respuesta: Problema con un switch sencillo

Hola, me parece que te serviria usar var3 como flag para no sobrecargar nada.
Le deberias asignar un valor el cual sabes que no se lo asignaras con el case.

Código PHP:
Ver original
  1. if($var1 !="0")
  2.     {
  3.         $var3 = "norequire";
  4.        switch ($var2)
  5.            {
  6.               case "A":$var3="cadena";brake;
  7.               case "B":$var3="cadena";brake;
  8.               case "C":$var3="cadena";brake;
  9.              
  10.            }
  11.         if($var3 != "norequire")
  12.         {
  13.             require_once("archivo.php");
  14.         }
  15.      }

Espero sirva, saludos.
  #8 (permalink)  
Antiguo 06/06/2012, 00:52
 
Fecha de Ingreso: julio-2005
Ubicación: Boyoliso
Mensajes: 661
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: Problema con un switch sencillo

Gracias goncho y gatorV, apenas vengo a revisar sus sugerencias, mañana las estaré probando a ver cómo me va! les agradezco la ayuda
  #9 (permalink)  
Antiguo 06/06/2012, 03:57
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: Problema con un switch sencillo

...y aún otra manera
Código PHP:
if($var1 !="0")
    {
       
$require false;
       switch (
$var2)
           { 
              case 
"A":$var3="cadena";break;
              case 
"B":$var3="cadena";break;
              case 
"C":$var3="cadena";break;
              default: 
$require=true;
           }
        if(
$require){require_once("archivo.php");}
    } 
saludos
  #10 (permalink)  
Antiguo 06/06/2012, 09:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Problema con un switch sencillo

@oscartt67 esa opción no le va a funcionar, ya que lo que quiere es que incluya solamente si entro a algún valor del switch, al ponerlo en el default, se va a ejecutar siempre (ya que para eso es el default) por lo que no entra en sus requerimientos.
  #11 (permalink)  
Antiguo 06/06/2012, 09:49
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: Problema con un switch sencillo

Cierto...confundí el case default de php con el case else de vb.
Lo siento y gracias por la corrección.

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 12:56.