is_integer()
La función is_integer() es un alias de is_int() en PHP. Verifica si una variable es de tipo entero y devuelve un boolean.
Introducción
is_integer() es un alias de is_int() en PHP. Comprueba si el tipo de una variable es entero y devuelve un boolean. Un entero en PHP es un número entero sin parte fraccionaria, como -5, 0 o 42.
Esta página explica qué verifica is_integer() (y qué no verifica intencionalmente), los problemas con las cadenas numéricas y qué nombre deberías usar en código nuevo.
Usa
is_int()en su lugar.is_integer()eis_int()son la misma función, por lo que ninguna está eliminada ni deprecada. Sin embargo,is_int()es el nombre canónico utilizado en todo el manual de PHP y en los proyectos modernos. Prefiere usarlo por consistencia.
Sintaxis
is_integer(mixed $value): boolRecibe un argumento, $value, la variable a inspeccionar, y devuelve true solo cuando $value es de tipo int, y false para cualquier otro tipo.
Ejemplo de uso
$var1 contiene el entero 42, por lo que la llamada devuelve true, que echo imprime como 1. $var2 es una cadena, por lo que la llamada devuelve false, que echo imprime como nada (una cadena vacía). Para ver los valores booleanos con claridad, usa var_dump() en lugar de echo.
Comprueba el tipo, no el valor
Esta es la fuente de confusión más común: is_integer() examina el tipo de la variable, por lo que una cadena como "42" o un float como 42.0 no es un entero, aunque "parezca" uno.
<?php
var_dump(is_integer(42)); // bool(true)
var_dump(is_integer("42")); // bool(false) — numeric string, not int
var_dump(is_integer(42.0)); // bool(false) — float, not int
var_dump(is_integer(true)); // bool(false) — bool, not int
var_dump(is_integer(null)); // bool(false)
var_dump(is_integer(PHP_INT_MAX)); // bool(true)
?>Si necesitas aceptar cadenas numéricas (por ejemplo, valores provenientes de $_GET, $_POST o un archivo CSV), usa is_numeric() o convierte/valida con intval() en su lugar.
¿Cuándo usaría esto?
- Validar el argumento de una función antes de realizar operaciones matemáticas exclusivas de enteros, por ejemplo, usar un valor como índice de array o límite de un bucle.
- Diferenciar tipos tras una función que puede devolver tipos mixtos (un patrón común con
strpos(), que devuelve un desplazamientointofalse):
<?php
$pos = strpos("hello world", "world");
if (is_integer($pos)) {
echo "Found at index $pos\n"; // Found at index 6
} else {
echo "Not found\n";
}
?>Funciones relacionadas de comprobación de tipos
| Función | Devuelve true para |
|---|---|
is_int() | Un int (nombre canónico; idéntico a is_integer()) |
is_float() | Un float (p. ej. 3.14, 42.0) |
is_string() | Un string, incluido "42" |
is_numeric() | Un int, float, o cadena numérica |
gettype() | (devuelve el nombre del tipo, no un bool) |
Consulta el capítulo sobre tipos de datos de PHP para obtener una visión completa de cómo PHP categoriza los valores.
Conclusión
is_integer() es un alias de is_int() que devuelve true solo cuando una variable es de tipo int. Recuerda que comprueba el tipo, no el valor, por lo que las cadenas numéricas y los floats devuelven false. En código nuevo, prefiere el canónico is_int(); recurre a is_numeric() cuando las cadenas numéricas también deban contar.