is_long()
La función is_long() en PHP verifica si una variable es de tipo entero. Devuelve true si la variable es un entero y false en caso contrario.
Introducción
is_long() es una función integrada de PHP que comprueba si una variable contiene un valor del tipo de dato entero. Devuelve true si la variable es un entero y false en caso contrario.
Lo más importante que hay que entender es que is_long() es un alias exacto de is_int(): ambos nombres llaman a la misma función subyacente y se comportan de manera idéntica. Esta página explica de dónde proviene el nombre is_long(), cómo se comporta y por qué en general deberías preferir is_int() en el código nuevo.
¿Por qué el nombre "is_long"?
En el código fuente C de PHP, el tipo entero está representado internamente por un long de C. Debido a ese historial, PHP expone tres nombres intercambiables para la misma verificación de entero:
is_int()— el nombre canónico y recomendado.is_integer()— un alias mantenido por legibilidad.is_long()— un alias que refleja el nombre del tipo C interno.
Los tres siguen disponibles en el PHP actual (incluido PHP 8.x), y los tres devuelven el mismo resultado para la misma entrada. El manual de PHP lista is_long() e is_integer() como alias de is_int() y recomienda is_int() por claridad.
Sintaxis básica
is_long($variable); // identical to is_int($variable)El parámetro $variable es el valor a comprobar. La función devuelve true solo para un valor entero real, sin coerción de tipos — las cadenas numéricas y los flotantes devuelven false.
Ejemplo de uso
Aquí se usa is_long() para probar tres variables diferentes:
bool(true)
bool(false)
bool(false)Solo $var1 es un entero verdadero. La cadena numérica "10" y el flotante 3.14 devuelven ambos false, porque is_long() comprueba el tipo real y nunca convierte el valor primero. Reemplazar is_long() por is_int() aquí produciría exactamente la misma salida — eso es lo que significa "alias".
Filtrar valores por tipo
Dado que devuelve un boolean, is_long() funciona directamente como callback para funciones como array_filter(). Esto es útil para conservar solo los enteros genuinos de un array mixto:
Array
(
[0] => 10
[3] => 40
)array_filter() conserva solo los enteros reales, descartando la cadena numérica "20" y el flotante 30.5. Ten en cuenta que las claves originales del array (0 y 3) se preservan, no se renumeran.
Notas importantes
- Alias de
is_int():is_long()no tiene comportamiento propio. No existe un tipo "long" separado en PHP distinto deint; el nombre simplemente refleja la representación interna en C. - Sigue disponible, pero no es preferida:
is_long()funciona en el PHP actual, pero el manual recomiendais_int()por legibilidad. Muchas guías de estilo y herramientas de análisis estático marcan el alias. - Sin coerción de tipos: al igual que
is_int(), devuelvefalsepara cadenas numéricas ("123") y flotantes de número entero (5.0). Para aceptar esos, usais_numeric()ofilter_var($var, FILTER_VALIDATE_INT).
Buenas prácticas
Preferir is_int() en código nuevo
is_int(), is_integer() e is_long() son intercambiables, así que elige uno y sé consistente. La convención de la comunidad es is_int() — es el más corto, el más claro y el nombre que usa la documentación.
Evitar comparaciones redundantes
Dado que la función ya devuelve un boolean, envolver su resultado en una comparación estricta (=== true) es innecesario. Simplemente escribe if (is_int($var)).
Funciones relacionadas de verificación de tipos
is_int()— la verificación de entero canónica y recomendada.is_integer()— otro alias legible deis_int().is_numeric()—truepara enteros, flotantes y cadenas numéricas.is_float()— comprueba valores de punto flotante.is_string()— comprueba valores de cadena.
Conclusión
is_long() es simplemente un nombre alternativo para is_int(). Realiza una verificación de entero estricta sin coerción y se comporta de manera idéntica a su contraparte más conocida. Dado que el alias no añade funcionalidad y puede confundir a los lectores, usa is_int() en código nuevo y reserva is_long() para comprender bases de código antiguas que aún dependen del nombre.