W3docs

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:

php— editable, runs on the server
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:

php— editable, runs on the server
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 de int; 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 recomienda is_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(), devuelve false para cadenas numéricas ("123") y flotantes de número entero (5.0). Para aceptar esos, usa is_numeric() o filter_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 de is_int().
  • is_numeric()true para 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.

Práctica

Práctica
¿Cuál de las siguientes afirmaciones sobre la función 'is_long' de PHP es verdadera?
¿Cuál de las siguientes afirmaciones sobre la función 'is_long' de PHP es verdadera?
Was this page helpful?