is_integer()
La fonction is_integer() est un alias de is_int() en PHP. Elle vérifie si une variable est un entier. Un entier est un type de données
Introduction
is_integer() est un alias de is_int() en PHP. Elle teste si le type d'une variable est entier et retourne un booléen. Un entier en PHP est un nombre entier sans partie fractionnaire, comme -5, 0 ou 42.
Cette page explique ce que is_integer() vérifie (et ce qu'elle ne vérifie délibérément pas), les pièges liés aux chaînes numériques, et le nom à préférer dans le nouveau code.
Utilisez
is_int()à la place.is_integer()etis_int()sont la même fonction, donc aucune n'est supprimée ni dépréciée. Cependant,is_int()est le nom canonique utilisé dans le manuel PHP et les bases de code modernes. Préférez-la pour la cohérence.
Syntaxe
is_integer(mixed $value): boolElle prend un argument, $value, la variable à inspecter, et retourne true uniquement lorsque $value est de type int, et false pour tout autre type.
Exemple d'utilisation
$var1 contient l'entier 42, donc l'appel retourne true, que echo affiche comme 1. $var2 est une chaîne, donc l'appel retourne false, que echo affiche comme rien (une chaîne vide). Pour voir clairement les valeurs booléennes, utilisez var_dump() plutôt que echo.
Elle vérifie le type, pas la valeur
C'est la source de confusion la plus courante : is_integer() examine le type de la variable, donc une chaîne comme "42" ou un flottant comme 42.0 n'est pas un entier, même si cela "ressemble" à un.
<?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 vous devez accepter des chaînes numériques (par exemple, des valeurs provenant de $_GET, $_POST ou d'un fichier CSV), utilisez is_numeric() ou effectuez un cast/validation avec intval() à la place.
Quand l'utiliser ?
- Protéger un argument de fonction avant d'effectuer des calculs réservés aux entiers, par exemple utiliser une valeur comme index de tableau ou borne de boucle.
- Différencier les types après une fonction pouvant retourner des types mixtes (un modèle courant avec
strpos(), qui retourne soit un décalageintsoitfalse) :
<?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";
}
?>Fonctions de vérification de type associées
| Fonction | Retourne true pour |
|---|---|
is_int() | Un int (nom canonique ; identique à is_integer()) |
is_float() | Un float (ex. 3.14, 42.0) |
is_string() | Une string, y compris "42" |
is_numeric() | Un int, un float, ou une chaîne numérique |
gettype() | (retourne le nom du type, pas un booléen) |
Consultez le chapitre sur les types de données PHP pour une vue d'ensemble complète de la façon dont PHP catégorise les valeurs.
Conclusion
is_integer() est un alias de is_int() qui retourne true uniquement lorsqu'une variable est de type int. N'oubliez pas qu'elle vérifie le type, pas la valeur, donc les chaînes numériques et les flottants retournent false. Pour le nouveau code, préférez le nom canonique is_int() ; utilisez is_numeric() lorsque les chaînes numériques doivent également être acceptées.