Foros del Web » Programando para Internet » PHP »

comparación con un rango de valores

Estas en el tema de comparación con un rango de valores en el foro de PHP en Foros del Web. Hola nuevamente quiero comparar una variable $x con un rango de valores, por ejemplo de 3 al 20. Sé q hay una forma como: if($x ...
  #1 (permalink)  
Antiguo 24/02/2004, 14:09
 
Fecha de Ingreso: enero-2004
Mensajes: 144
Antigüedad: 20 años, 9 meses
Puntos: 0
comparación con un rango de valores

Hola nuevamente

quiero comparar una variable $x con un rango de valores, por ejemplo de 3 al 20. Sé q hay una forma como:

if($x == "\[3-20]"){
echo "hola";
}

Pero no encuentro la sintaxis correcta, alguien me ayuda please?????
  #2 (permalink)  
Antiguo 24/02/2004, 15:33
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 10 meses
Puntos: 5
Pues que yo sepa en PHP no existe tal cosa. lo que podrías hacer sería comparar 2 veces, una contra el minimo y una contra el máximo, algo así:

if ($x>=3 || $x<=20) {
echo "hola";
}


Lo mas parecido es eso, aunque si los datos o rangos a comparar los traes de una BD, en MySQL tambien puedes hacer algo así...

select campo between 3 and 20

Lo que resulta en 1 (true) si el valor de ese campo cae entre los dos valores, o 0 (false) si no.

__________________
Manoloweb
  #3 (permalink)  
Antiguo 24/02/2004, 19:37
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 22 años, 3 meses
Puntos: 8
Lo que hago en esos casos es usar range() para crear la lista de valores posibles y lusgo lo verifico con in_array()
Código PHP:
if( in_array($xrange(320)) ) {
    
// ENCONTRADO
} else {
    
// NO

Espero que sea de tu ayuda.

Saludos
  #4 (permalink)  
Antiguo 24/02/2004, 19:40
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 22 años, 3 meses
Puntos: 8
Y mirando bien, Manoloweb, deberias usar && en vez de || en tu condicion.
  #5 (permalink)  
Antiguo 24/02/2004, 20:21
 
Fecha de Ingreso: enero-2004
Mensajes: 144
Antigüedad: 20 años, 9 meses
Puntos: 0
esta excelente

esta muy buena tu idea..


...pero yo estoy seguro de haber visto en alguna parte algo como asi:

[1-5a-zA-Z] (o algo así)


y lo usan para referenciar a todos los valores q se incluyen en ese rango (1,2,3,4,5 a,b,.....x,y,z A, B......X,Y,Z)

Han visto alguna ves eso, o estoy equivocado??
  #6 (permalink)  
Antiguo 25/02/2004, 05:21
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Eso que usas .. Machine80 son patrones de expresiones regulares .. y desde PHP los puedes usar con funciones como:

eregi() .. preg_match() .. y algunas más ...

www.php.net para más info.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 25/02/2004, 10:02
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 10 meses
Puntos: 5
Fran, Tienes toda la razón...

De hecho ese tipo de "errorcitos" pueden volver loco a cualquiera cuando el script comienza a hacer cosas raras.

__________________
Manoloweb
  #8 (permalink)  
Antiguo 25/02/2004, 10:12
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 10 meses
Puntos: 5
Por otro lado, en lo que toca al uso de expresiones regulares para ese tipo de comparaciones numéricas, simplemente no lo recomiendo, pues las ER sirven para evaluar patrones de cadenas, no rangos numéricos.

Y aunque tal vez pudiera hacerse un patrón para encontrar las coincidencias que necesitas, lo mas seguro es que termines con un patrón muy complejo, y tu aplicación consumiría muchos más recursos de los necesarios, pues las expresiones regulares son bastante demandantes de recursos del sistema.


No quiero desanimarte si quieres meterte a las expresiones regulares, pues conocerlas te ahorrará mucho trabajo en ciertas circunstancias, de hecho yo las uso mucho cuando valído campos de formularios.

__________________
Manoloweb
  #9 (permalink)  
Antiguo 25/02/2004, 13:14
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 5 meses
Puntos: 16
Hola,

Opino como Manoloweb, las expresines regulares no son lo mejor para rangos numericos.

Por ejemplo, piensa como seria la expresion regular para validar si un numero esta entre 0 y 347. Ahora mismo ni se me ocurre, directametne es mas facil el < y > (incluso mas "natural"). Quizas deberias añadir otra condicion para especificar que sea un entero y eliminar los posibles valores decimales (si es que quieres que solo sea el "rango" de numeros enteros). En ese casi quizas la solucion de fran86 sea mas "natural".

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
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 14:45.