La fonction is_int() permet de déterminer si une variable contient une valeur de type entier en PHP. Elle fait partie des fonctions natives du langage, disponibles sans configuration préalable.
Table des matières
Syntaxe et comportement de is_int()
is_int() accepte un seul argument obligatoire de type mixed, ce qui lui permet de recevoir n’importe quelle valeur PHP sans provoquer d’erreur de type.
is_int(mixed $value): bool
La fonction ne réalise aucune conversion implicite sur la valeur transmise, ce qui garantit une vérification du type réel de la variable. Elle retourne true si la valeur est de type int, et false dans tous les autres cas, sans exception intermédiaire.
Passer une variable non initialisée ne cause pas d’erreur fatale, mais génère un avertissement PHP qu’il vaut mieux éviter. Il est donc conseillé de s’assurer que la variable est correctement définie avant d’appeler is_int().
Pour contrôler plusieurs valeurs, vous devez appeler la fonction séparément pour chacune d’elles, car elle ne prend pas en charge plusieurs arguments simultanément. Ce comportement strict et binaire rend cette fonction particulièrement fiable dans les structures conditionnelles et la validation de données entrantes.
Comment identifier les nombres positifs et négatifs ?
PHP reconnaît aussi bien les entiers positifs que négatifs comme étant de type int. La fonction couvre donc l’ensemble des valeurs entières usuelles, y compris le zéro.
Voici comment is_int() réagit face à différentes valeurs entières :
<?php
$a = 42;
$b = -15;
$c = 0;
var_dump(is_int($a)); // bool(true)
var_dump(is_int($b)); // bool(true)
var_dump(is_int($c)); // bool(true)
?>
Les trois appels retournent true car 42, -15 et 0 sont nativement typés int en PHP. La valeur zéro est bien considérée comme un entier valide par le moteur PHP.
Comment vérifier si une variable n’est pas un entier en PHP ?
La fonction retourne false pour tout type qui n’est pas strictement un int. Les chaînes numériques, les nombres flottants, les booléens et les tableaux sont tous rejetés, même lorsqu’ils semblent représenter un nombre entier.
Comprendre ce comportement strict est indispensable pour éviter des erreurs de validation silencieuses dans vos scripts.
<?php
$chaine = "42"; // string
$flottant = 42.0; // float
$booleen = true; // bool
$tableau = [42]; // array
var_dump(is_int($chaine)); // bool(false)
var_dump(is_int($flottant)); // bool(false)
var_dump(is_int($booleen)); // bool(false)
var_dump(is_int($tableau)); // bool(false)
?>
Chaque évaluation retourne false car aucune de ces variables n’est de type int. La chaîne "42" est particulièrement piégeuse : elle contient un chiffre, mais reste un type string aux yeux de PHP.
Utiliser is_int dans une condition if
Combiner is_int() avec une structure if permet de conditionner l’exécution d’un bloc de code à la présence d’un entier valide. C’est le mode d’utilisation le plus répandu de cette fonction dans un script PHP concret.
<?php
$valeur = 10;
if (is_int($valeur)) {
echo "La variable est un entier.";
} else {
echo "La variable n'est pas un entier.";
}
?>
Ce script affiche La variable est un entier. car $valeur est bien de type int. La branche else s’active dès que la donnée est d’un type différent, ce qui permet de traiter proprement les deux scénarios.
Cas pratique : valider un identifiant utilisateur avec is_int
Dans une application PHP, un identifiant utilisateur doit impérativement être un entier avant d’être transmis à une requête SQL. Contrôler ce type en amont protège la couche base de données contre des données malformées ou inattendues.
<?php
function validerIdUtilisateur(mixed $id): string
{
if (!is_int($id)) {
return "Erreur : l'identifiant doit être un entier valide.";
}
if ($id <= 0) {
return "Erreur : l'identifiant doit être un entier positif.";
}
return "Identifiant valide : " . $id;
}
echo validerIdUtilisateur(5); // Identifiant valide : 5
echo validerIdUtilisateur("5"); // Erreur : l'identifiant doit être un entier valide.
echo validerIdUtilisateur(-3); // Erreur : l'identifiant doit être un entier positif.
?>
La fonction validerIdUtilisateur() écarte immédiatement toute valeur dont le type n’est pas int. Le second contrôle sur le signe de l’entier renforce la robustesse de la validation en bloquant les identifiants négatifs, sans signification métier dans ce contexte.
Sources: PHP.net