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
Aunque si deseamos tener el código mas compacto, se puede hacer así:
$dato = "Naranja";
echo (val_inter($dato, "Manzana, Pera, Uva", ",")) ? "Existe" : "No existe";
//Resultado No existe

angelinux

Desarrollador de páginas web desde el año 2000 y con experiencia en programación de sistemas para empresas desde el 2008; cofundador de CONSoluciones; autor del blog de software libre “Angelinux-slack”; docente en maestría en UPAV y fundador de la distribución Linux Falco que está en desarrollo para la Universidad Veracruzana. Además, ponente, organizador de congreso, laborista social, impartidor de cursos de programación y servidores Linux, webmaster, y ex invitado en programa de televisión.

0 Comentarios

Deja un comentario