El problema
Al momento de hacer validaciones en nuestros sistemas, podemos verificar si un dato existe en un rango de valores en PHP.
Si se necesita saber si una variable tiene X o Y valor, a veces hacemos la validación var == 1 || var == 2 || var == “A” || var == “3”.
Es decir, que por cada dato, debemos verificar si la variable tiene ese valor, o, si la misma variable tiene el otro valor.
PHP
Para verificar si un dato existe en un rango de valores en PHP, usamos la siguiente función :
function val_inter($dato, $rango, $separador){ return (in_array($dato, explode($separador, $rango))) ? true : false; }
¿Cómo se usa?
Suponiendo que tenemos una variable llamada valor, y que ésta, contiene un 5.
$valor = "5"; if (val_inter($valor, "1,2,3,4,5", ","); echo "Si está en el rango de valores"; else echo "No está en el rango de valores";
Explicación
Por ejemplo, si queremos saber si la variable A tiene el valor 1, 2, 3, 4, ó 5:
val_inter($A, "1,2,3,4,5", ",");
¿Qué significa esto? Se reciben 3 parámetros:
1: La variable que deseamos validar.
2: Los valores posibles separados.
3: El valor que utilizamos para separar.
¿Para qué colocamos el separador?
Porque podríamos separarlo de otra manera:
val_inter($A, "1-2-3-4-5", "-");
Como en la anterior, pero separándolo por guiones.
val_inter($A, ",_._:_;", "_");
Aquí podemos saber si se tiene un coma, punto, dos puntos o punto y coma, y lo separamos con un guión bajo.
Ahora, una vez que le enviamos los datos a validar, explode($separador, $rango).
Primero los explota (explode), es decir, crea un vector con los datos enviados, separados por el carácter que nosotros le indicamos.
Por ejemplo para
val_inter($A, "A,B,C,D,E", ",")
Se crearía el siguiente vector:
0 | 1 | 2 | 3 | 4 |
A | B | C | D | E |
Y después se busca dentro del vector el valor que deseamos validar,
in_array($dato, explode($separador, $rango)).
Si lo encuentra, nos devuelve un 1, así que hacemos un if compacto.
(in_array($dato, explode($separador, $rango))) ? true : false
Así qué si el valor que deseamos validar, sí se encuentra dentro del rango de valores, entonces nos devuelve true, de lo contrario, nos devuelve false.
Por lo tanto validamos un valor, en un rango de valores, sin límite, todo en una sola línea.
Ejemplo
$dato = 1; if (val_inter($dato, "1,2,3", ",")) echo "Existe"; else echo "No existe"; //Resultado Existe $dato = "Naranja"; if (val_inter($dato, "Manzana, Pera, Uva", ",")) echo "Existe"; else echo "No existe"; //Resultado No Existe
$dato = "Naranja"; echo (val_inter($dato, "Manzana, Pera, Uva", ",")) ? "Existe" : "No existe"; //Resultado No existe
0 Comentarios