Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: jdc en 18 Noviembre 2009, 05:38 am



Título: Como hago esta comparacion con switch en php?
Publicado por: jdc en 18 Noviembre 2009, 05:38 am
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


Título: Re: Como hago esta comparacion con switch en php?
Publicado por: Mr. Crowley en 18 Noviembre 2009, 08:26 am
Jejeje, en la documentacion SI sale. Pruebe algo como esto:

Código
  1. <?php
  2. $iNumero=24;
  3.  
  4. switch($iNumero){
  5. case ($iNumero>=0 and $iNumero<=99):
  6. echo "Esta entre 0 y 99";
  7. break;
  8.  
  9. case ($iNumero>=100 and $iNumero<=199):
  10. echo "Esta entre 100 y 199";
  11. break;
  12.  
  13. case ($iNumero>=200 and $iNumero<=299):
  14. echo "Esta entre 200 y 299";
  15. break;
  16.  
  17. case ($iNumero>=10000 and $iNumero<=10999):
  18. echo "Esta entre 10000 y 10999";
  19. break;
  20.  
  21. default:
  22. echo "Fuera de rango";
  23. }
  24. ?>
  25.  


Título: Re: Como hago esta comparacion con switch en php?
Publicado por: [u]nsigned en 18 Noviembre 2009, 16:05 pm
Has probado eso?

Porque no deberia funcionar, es decir, por ejemplo:

Código:
($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


Título: Re: Como hago esta comparacion con switch en php?
Publicado por: cassiani en 18 Noviembre 2009, 16:25 pm
no, si $iNumero = 24 al evaluar
Código:
$iNumero>=0 and $iNumero<=99
ambos son true, lo mismo para cualquier cantidad que este dentro del rango, el code está perfecto.


Título: Re: Como hago esta comparacion con switch en php?
Publicado por: jdc en 18 Noviembre 2009, 16:38 pm
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!


Título: Re: Como hago esta comparacion con switch en php?
Publicado por: WHK en 18 Noviembre 2009, 18:36 pm
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)


Título: Re: Como hago esta comparacion con switch en php?
Publicado por: jdc en 18 Noviembre 2009, 19:17 pm
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...


Título: Re: Como hago esta comparacion con switch en php?
Publicado por: Castg! en 18 Noviembre 2009, 22:38 pm
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!