log()
La función log() en PHP calcula el logaritmo natural de un número o en cualquier base especificada como segundo argumento.
La función log() en PHP devuelve el logaritmo de un número. Por defecto devuelve el logaritmo natural — el logaritmo en base e (el número de Euler, aproximadamente 2.71828) — pero puedes pasar un segundo argumento para calcular el logaritmo en cualquier base.
Un logaritmo responde a la pregunta "¿a qué potencia debe elevarse la base para producir este número?" Por ejemplo, log(8, 2) es 3, porque 2 elevado a la potencia 3 es igual a 8. Esta página cubre la sintaxis, las bases más comunes, el comportamiento en casos límite y un caso de uso práctico.
Sintaxis
log(float $num, float $base = M_E): float| Parámetro | Descripción |
|---|---|
$num | El número cuyo logaritmo deseas obtener. Debe ser positivo para un resultado real. |
$base | Opcional. La base logarítmica. Por defecto es M_E (≈ 2.71828), lo que da el logaritmo natural. |
La función devuelve un float: el logaritmo de $num en la base indicada.
Ejemplo básico: logaritmo natural
Cuando llamas a log() con un solo argumento, obtienes el logaritmo natural (base e):
Usar una base personalizada
Pasa un segundo argumento para calcular el logaritmo en una base diferente. Esto es útil para logaritmos en base 2 (binario) o en base 10 (común):
<?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)
?>Para la base 10 en concreto, PHP también ofrece la función dedicada log10(), y para valores pequeños cercanos a 1 existe log1p(), que es más precisa que log(1 + x).
Casos límite a tener en cuenta
El logaritmo matemático solo está definido para números positivos, por lo que log() devuelve valores flotantes especiales fuera de ese rango:
<?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"
?>Como NAN e INF se propagan silenciosamente a través de la aritmética, valida la entrada antes de llamar a log():
<?php
$value = -5;
if ($value > 0) {
echo log($value);
} else {
echo "log() requires a positive number";
}
// Outputs: log() requires a positive number
?>Puedes detectar estos resultados con is_nan() e is_infinite() si un valor llega a log() sin validación previa.
Un caso de uso práctico
Los logaritmos son habituales cuando necesitas saber cuántos dígitos tiene un número, o para escalar datos. Por ejemplo, el número de dígitos decimales de un entero positivo es floor(log10($n)) + 1:
<?php
$n = 12345;
$digits = (int) floor(log10($n)) + 1;
echo "{$n} has {$digits} digits"; // Outputs: 12345 has 5 digits
?>Funciones relacionadas
log10()— logaritmo en base 10.log1p()—log(1 + x)preciso para valores pequeños dex.exp()— la inversa del logaritmo natural (eelevado a una potencia).pow()— eleva un número a una potencia.sqrt()— raíz cuadrada.- Funciones matemáticas de PHP — resumen de todos los helpers matemáticos.
Conclusión
La función log() es una herramienta fiable para cálculos logarítmicos en PHP. Con su segundo argumento opcional gestiona cualquier base, mientras que su valor predeterminado de logaritmo natural cubre la necesidad más común. Recuerda los casos límite — log(0) es -INF y log() de un número negativo es NAN — y valida la entrada para mantener tus cálculos robustos.