Foros del Web » Programando para Internet » PHP »

dudilla con switch

Estas en el tema de dudilla con switch en el foro de PHP en Foros del Web. no se puede comparar por < o > o hacer una expresiooon más compleja con and y ors en los csos de un switch?? Gracias ...
  #1 (permalink)  
Antiguo 25/11/2003, 03:36
 
Fecha de Ingreso: julio-2003
Mensajes: 132
Antigüedad: 21 años, 3 meses
Puntos: 0
dudilla con switch

no se puede comparar por < o > o hacer una expresiooon más compleja con and y ors en los csos de un switch??

Gracias de antemano
  #2 (permalink)  
Antiguo 25/11/2003, 05:46
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 5 meses
Puntos: 16
Hola,

Mira, este switch:
Código PHP:
switch($variable) {
case 
expresion_1:
  
codigo_1
  
break;
case 
expresion_2:
  
codigo_2


equivale a :
Código PHP:
if ($variable==expresion_1) {
  
codigo_1
} elseif ($variable==expresion_2) {
  
codigo_2

expresion_1, expresion_2 puede ser cualquier expresion, como funciones, comparaciones, etc. Pero siempre se comparada el resultado de esa expresion con el valor puesto en switch().

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 25/11/2003, 05:56
 
Fecha de Ingreso: julio-2003
Mensajes: 132
Antigüedad: 21 años, 3 meses
Puntos: 0
ok, entonces...

entonces q esta mal aki??

switch ($arr["%"])
{
case <50:
$txtm= "Buena relacion";
break;
case <75:
$txtm= "Relación ajustada";
break;
default:
$txtm= "Situación arriesgada.";
}

Gracias de antemano
  #4 (permalink)  
Antiguo 25/11/2003, 06:10
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 5 meses
Puntos: 16
Pues mal la sintaxis. Lo que pongas en el case debe ser una expresion correcta. PHP evalua esa expresion por separado. Tambien evalua la expresion que le pones en switch. Y compara esos dos valores. No crea una comparacion con las cadenas que usas.

Si miras en el manual www.php.net/switch , en uno de los comentarios de los usuarios, pone algo parecido a lo tuyo. Seria algo asi:
Código PHP:
switch (true)
{
case 
$arr["%"]<50:
$txtm"Buena relacion";
break;
case 
$arr["%"]<75:
$txtm"Relación ajustada";
break;
default:
$txtm"Situación arriesgada.";

que equivale a:
Código PHP:
if (true==($arr["%"]<50)) {
$txtm"Buena relacion";
} elseif (
true==($arr["%"]<75)) {
$txtm"Relación ajustada";
} else {
$txtm"Situación arriesgada.";

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 25/11/2003, 06:13
 
Fecha de Ingreso: julio-2003
Mensajes: 132
Antigüedad: 21 años, 3 meses
Puntos: 0
Claro, claro!!

Tienes toda la razon, muchas gracas Josemi y sigue asi
  #6 (permalink)  
Antiguo 25/11/2003, 06:30
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 21 años, 6 meses
Puntos: 2
si lo que intentas es comparar datos o averiguar si son diferentes, debes usar los IF, pero si lo que necesitas es relacionar un dato con otro dato identico, que tu ya sabes que existe o no... debes usar el SWITCH
saludos..
__________________
3w.valenciadjs.com
3w.laislatv.com
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 13:12.