Foros del Web » Programando para Internet » PHP »

switch compuesto (con dos variables)

Estas en el tema de switch compuesto (con dos variables) en el foro de PHP en Foros del Web. Tengo tres if así: if ($a=1 and $b=1) { echo "aaa"; } if ($a=1 and $b=0) { echo "bbb"; } if ($a=0 and $b=1) { ...
  #1 (permalink)  
Antiguo 15/04/2010, 22:49
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 11 meses
Puntos: 21
switch compuesto (con dos variables)

Tengo tres if así:

if ($a=1 and $b=1) {
echo "aaa";
}

if ($a=1 and $b=0) {
echo "bbb";
}

if ($a=0 and $b=1) {
echo "ccc";
}

¿Como lo puedo hacer con switch?

Gracias
  #2 (permalink)  
Antiguo 15/04/2010, 22:53
rpv
 
Fecha de Ingreso: febrero-2010
Mensajes: 275
Antigüedad: 14 años, 10 meses
Puntos: 10
Respuesta: switch compuesto (con dos variables)

el switch se debe usar cuando solo se necesita hacer comparación de una variable para tu caso te recomiendo mejor el elseif

Código PHP:
Ver original
  1. if ($a=1 and $b=1) {
  2. echo "aaa";
  3. }elseif ($a=1 and $b=0) {
  4. echo "bbb";
  5. }elseif ($a=0 and $b=1) {
  6. echo "ccc";
  7. }
  #3 (permalink)  
Antiguo 15/04/2010, 23:17
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 11 meses
Puntos: 21
Respuesta: switch compuesto (con dos variables)

Gracias.

Aunque realmente siguen siendo 3 if anidados.
Deberá mejorarse esta funcionalidad del PHP para versiones posteriores.

Es el segundo detalle que veo y no me convence, por lo demás, me parece un lenguaje maravilloso.
  #4 (permalink)  
Antiguo 15/04/2010, 23:30
rpv
 
Fecha de Ingreso: febrero-2010
Mensajes: 275
Antigüedad: 14 años, 10 meses
Puntos: 10
Respuesta: switch compuesto (con dos variables)

Cita:
Iniciado por Bier Ver Mensaje
Gracias.

Aunque realmente siguen siendo 3 if anidados.
Deberá mejorarse esta funcionalidad del PHP para versiones posteriores.

Es el segundo detalle que veo y no me convence, por lo demás, me parece un lenguaje maravilloso.

amigo, anidados sería esto:


Código PHP:
Ver original
  1. if ($a=1 and $b=1){
  2. ---- if ($a=1 and $b=0){
  3. -------- if ($a=0 and $b=1){
  4. --------------echo "ccc";
  5. -------- }
  6. ---- }
  7. }

en el caso de los elseif no entra en cada segmento, a menos de que se trate de una condición válida, funcionalmente es igual al switch


también podrías manejarlo de otra forma:



Código PHP:
Ver original
  1. $case=($a=1 and $b=1)?0:(($a=1 and $b=0)?1:(($a=0 and $b=1)?2:3));
  2.  
  3. //y ya usas $case en tu switch.


Incluso en la documentación oficial usan el elseif como estructura idéntica a switch: http://www.php.net/manual/en/control-structures.switch.php
  #5 (permalink)  
Antiguo 15/04/2010, 23:34
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 11 meses
Puntos: 21
Respuesta: switch compuesto (con dos variables)

Funcionó perfecto.
Gracias
  #6 (permalink)  
Antiguo 15/04/2010, 23:52
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 11 meses
Puntos: 21
Respuesta: switch compuesto (con dos variables)

Tienes razón, ese es un verdadero if anidado.
Tu primer sugerencia ya la implementé, trabaja perfecto.

Estudiaré la segunda opción, no esta de mas.

Gracias nuevamente
  #7 (permalink)  
Antiguo 16/04/2010, 06:49
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 17 años, 1 mes
Puntos: 5
Respuesta: switch compuesto (con dos variables)

Cita:
Iniciado por Bier Ver Mensaje
Gracias.
Deberá mejorarse esta funcionalidad del PHP para versiones posteriores.
¿Qué?
¿Cuál?
¿Dónde?
  #8 (permalink)  
Antiguo 16/04/2010, 07:51
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: switch compuesto (con dos variables)

Claro que es posible hacerlo con un switch:
Código PHP:
Ver original
  1. switch(true) {
  2. case ($a == 1) && ($b == 1):
  3.      break;
  4. case ($a == 0) && ($b == 1):
  5.      break;
  6. case ($a == 1) && ($b == 0):
  7.      break;
  8. case ($a == 0) && ($b == 0):
  9.      break;
  10. }

Saludos.
  #9 (permalink)  
Antiguo 16/04/2010, 08:31
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 11 meses
Puntos: 21
Respuesta: switch compuesto (con dos variables)

Cita:
Iniciado por GatorV Ver Mensaje
Claro que es posible hacerlo con un switch:
Código PHP:
Ver original
  1. switch(true) {
  2. case ($a == 1) && ($b == 1):
  3.      break;
  4. case ($a == 0) && ($b == 1):
  5.      break;
  6. case ($a == 1) && ($b == 0):
  7.      break;
  8. case ($a == 0) && ($b == 0):
  9.      break;
  10. }

Saludos.
SuperPerfectisimo,
No he dicho nada, cada vez me maravilla más PHP.
Gracias GatorV.
  #10 (permalink)  
Antiguo 16/04/2010, 08:57
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: switch compuesto (con dos variables)

Esa sintaxis es heredada de C

Etiquetas: compuesto, dos, switch, variables
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 02:47.