abs()
Découvrez la fonction abs() en PHP, utilisée pour obtenir la valeur absolue d'un nombre.
La fonction abs() renvoie la valeur absolue d'un nombre — sa magnitude sans signe. Autrement dit, elle indique à quelle distance se trouve le nombre de zéro, ainsi abs(-5) et abs(5) donnent tous les deux 5. Cette page couvre la syntaxe, les types de retour, les cas limites à connaître et les utilisations pratiques les plus courantes.
Syntaxe
abs(int|float $num): int|float$num— le nombre dont vous souhaitez obtenir la valeur absolue (entier ou flottant).- Valeur de retour — la valeur absolue de
$num. Le type de retour correspond au type de l'entrée : passez un entier, obtenez un entier ; passez un flottant, obtenez un flottant.
Exemple de base
Ceci affiche 5. On part d'une valeur négative, on appelle abs() pour supprimer le signe, puis on affiche le résultat. Une entrée positive serait retournée telle quelle.
Entiers et flottants
abs() préserve le type numérique, ce qui compte lorsqu'on compare des résultats ou qu'on formate une sortie :
<?php
echo abs(-7); // 7 (int)
echo "\n";
echo abs(-7.5); // 7.5 (float)
echo "\n";
var_dump(abs(-7)); // int(7)
var_dump(abs(-7.5)); // float(7.5)
?>Les chaînes numériques sont également acceptées — abs("-3.2") renvoie le flottant 3.2 — mais passer une chaîne non numérique déclenche une TypeError en PHP 8+, donc validez l'entrée avec is_numeric() quand elle provient de l'extérieur de votre code.
Utilisation pratique : distance entre deux valeurs
La raison la plus courante d'utiliser abs() est de mesurer la différence entre deux nombres sans se soucier duquel est le plus grand :
<?php
$expected = 100;
$actual = 87;
$difference = abs($expected - $actual);
echo "You are off by {$difference}.";
?>Ceci affiche You are off by 13. que $actual soit 87 ou 113 — l'ordre de la soustraction n'a plus d'importance. Le même schéma est pratique pour les tolérances (if (abs($a - $b) < 0.001)), les écarts de prix et les distances entre coordonnées.
Cas limites et pièges
- Zéro reste zéro.
abs(0)vaut0etabs(-0.0)vaut0.0. - Déjà positif ?
abs()le retourne tel quel, il est donc sûr de l'appeler sans vérifier le signe au préalable. - Dépassement de
PHP_INT_MIN.abs(PHP_INT_MIN)ne peut pas tenir dans un entier (son équivalent positif est supérieur d'une unité àPHP_INT_MAX), donc PHP le renvoie sous forme de flottant pour éviter le dépassement. - Il n'arrondit pas.
abs()supprime uniquement le signe. Pour supprimer la partie décimale, utilisezfloor(),ceil()ouround().
Fonctions associées
round()— arrondir un flottant à une précision donnée.floor()/ceil()— arrondir vers le bas / vers le haut à l'entier le plus proche.pow()etsqrt()— exponentiation et racines carrées.max()/min()— sélectionner la plus grande ou la plus petite valeur parmi plusieurs.is_numeric()— vérifier qu'une valeur est un nombre avant d'effectuer des calculs dessus.
Pour un aperçu plus large des aides numériques de PHP, consultez la référence PHP Math.
Conclusion
abs() est un outil petit mais fréquemment utilisé : il renvoie la magnitude d'un nombre quel que soit son signe, conserve le type de l'entrée et s'avère particulièrement utile lorsqu'on a besoin de la distance entre deux valeurs. N'oubliez pas qu'il n'arrondit pas, et méfiez-vous du cas limite PHP_INT_MIN où le résultat est renvoyé sous forme de flottant.