Como hago esta comparacion con switch en php?

Iniciado por jdc, 18 Noviembre 2009, 05:38 AM

0 Miembros y 1 Visitante están viendo este tema.

jdc

Necesito hacer la siguiente comparación en php:

Si x esta entre 0 y 99
    muestra esto

si esta entre 100 y 199
    muestra esto

si esta entre 200 y 299
    muestra esto....


... si esta entre 10.000 y 10.099
     muestra esto

Se que con un if seria muy facil xD en teoria, estaba tratando de usar el switch de php pero en la documentacion (http://php.net/manual/en/control-structures.switch.php) no sale algo parecido a lo que necesito :S

Mr. Crowley

Jejeje, en la documentacion SI sale. Pruebe algo como esto:

Código (php) [Seleccionar]

<?php
$iNumero=24;

switch($iNumero){
case ($iNumero>=and $iNumero<=99):
echo "Esta entre 0 y 99";
break;

case ($iNumero>=100 and $iNumero<=199):
echo "Esta entre 100 y 199";
break;

case ($iNumero>=200 and $iNumero<=299):
echo "Esta entre 200 y 299";
break;

case ($iNumero>=10000 and $iNumero<=10999):
echo "Esta entre 10000 y 10999";
break;

default:
echo "Fuera de rango";
}
?>

Mi blog personal: www.calirojas.com

[u]nsigned

Has probado eso?

Porque no deberia funcionar, es decir, por ejemplo:

($iNumero>=0 and $iNumero<=99)

En este caso seria 1 (true) y asi sucesivamente, siempere sera 1(true) o 0(false), y por lo tanto siempre se ejecutara default

Saludos.

PD: Ahora no tengo Apache+PHP para comprobar esto, pero creo que es como digo.. :P

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!

cassiani

no, si $iNumero = 24 al evaluar
$iNumero>=0 and $iNumero<=99
ambos son true, lo mismo para cualquier cantidad que este dentro del rango, el code está perfecto.

jdc

Es genial, es lo que buscaba... Muchas gracias!

En realidad quiero hacer un programa que tenía en .net ahora en php :) con esto ya me resulta, muchas gracias otra vez!

WHK

a mi me resulta mas comodo utilizar if, elseif y else, te evitas el break xD además entre llaves se ve mas ordenado (para mi)

jdc

Pero necesito hacer una comparación de aproximadamente 125 rangos...

Tendría que usar el if, else y elseif pero tenía entendido que que usa más recursos no? Además en este caso no se recorre el script completo sí la variable evaluada esta al principio se corta con el break por lo tanto sería menos dolor para el servidor no? xD bueno dolorcito pero algo se ahorra o no...

Castg!

probe el codigo y va perfecto, cuando leia el primer comentario pensaba ¿OCMO LO HAGO? y era tan facil XD! pero no me queda algo claro, "swich" es para hacerlo un numero o que?

edito, que gil! no habia visto el link de janito. perdon!