log()
Découvrez la fonction log() en PHP pour calculer le logarithme naturel ou en base personnalisée d'un nombre.
La fonction log() en PHP retourne le logarithme d'un nombre. Par défaut, elle retourne le logarithme naturel — le logarithme en base e (nombre d'Euler, environ 2,71828) — mais vous pouvez passer un second argument pour calculer le logarithme dans n'importe quelle base.
Un logarithme répond à la question « à quelle puissance la base doit-elle être élevée pour produire ce nombre ? » Par exemple, log(8, 2) vaut 3, car 2 élevé à la puissance 3 est égal à 8. Cette page couvre la syntaxe, les bases courantes, le comportement aux cas limites et un cas d'usage pratique.
Syntaxe
log(float $num, float $base = M_E): float| Paramètre | Description |
|---|---|
$num | Le nombre dont vous souhaitez le logarithme. Doit être positif pour un résultat réel. |
$base | Optionnel. La base logarithmique. Par défaut M_E (≈ 2,71828), ce qui donne le logarithme naturel. |
La fonction retourne un float : le logarithme de $num dans la base donnée.
Exemple de base : logarithme naturel
Lorsque vous appelez log() avec un seul argument, vous obtenez le logarithme naturel (base e) :
Utiliser une base personnalisée
Passez un second argument pour calculer le logarithme dans une base différente. C'est pratique pour les logarithmes en base 2 (binaire) ou en base 10 (décimal) :
<?php
echo log(100, 10), "\n"; // 2 (10^2 = 100)
echo log(8, 2), "\n"; // 3 (2^3 = 8)
echo log(1, 5), "\n"; // 0 (any base^0 = 1)
?>Pour la base 10 spécifiquement, PHP propose également la fonction dédiée log10(), et pour les petites valeurs proches de 1, il existe log1p(), qui est plus précise que log(1 + x).
Cas limites à surveiller
Le logarithme mathématique n'est défini que pour les nombres positifs, donc log() retourne des valeurs flottantes spéciales en dehors de cette plage :
<?php
echo log(1), "\n"; // 0 — log of 1 is always 0
echo log(0), "\n"; // -INF — log of 0 is negative infinity
echo log(-5), "\n"; // NAN — log of a negative number is "not a number"
?>Comme NAN et INF se propagent silencieusement dans les calculs arithmétiques, validez l'entrée avant d'appeler log() :
<?php
$value = -5;
if ($value > 0) {
echo log($value);
} else {
echo "log() requires a positive number";
}
// Outputs: log() requires a positive number
?>Vous pouvez détecter ces résultats avec is_nan() et is_infinite() si une valeur atteint log() sans être vérifiée.
Un cas d'usage pratique
Les logarithmes sont courants lorsque vous avez besoin de savoir combien de chiffres comporte un nombre, ou pour mettre des données à l'échelle. Par exemple, le nombre de chiffres décimaux d'un entier positif est floor(log10($n)) + 1 :
<?php
$n = 12345;
$digits = (int) floor(log10($n)) + 1;
echo "{$n} has {$digits} digits"; // Outputs: 12345 has 5 digits
?>Fonctions associées
log10()— logarithme en base 10.log1p()—log(1 + x)précis pour les petites valeurs dex.exp()— l'inverse du logarithme naturel (eélevé à une puissance).pow()— élever un nombre à une puissance.sqrt()— racine carrée.- PHP Math Functions — aperçu de toutes les fonctions mathématiques.
Conclusion
La fonction log() est un outil fiable pour les calculs logarithmiques en PHP. Grâce à son second argument optionnel, elle gère n'importe quelle base, tandis que son comportement par défaut en logarithme naturel couvre le besoin le plus courant. N'oubliez pas les cas limites — log(0) vaut -INF et log() d'un nombre négatif vaut NAN — et validez les entrées pour que vos calculs restent robustes.