log()
Aprenda a usar a função log() no PHP para calcular logaritmos naturais e em qualquer base, com exemplos práticos e casos especiais.
A função log() no PHP retorna o logaritmo de um número. Por padrão, ela retorna o logaritmo natural — o logaritmo na base e (número de Euler, aproximadamente 2.71828) — mas é possível passar um segundo argumento para calcular o logaritmo em qualquer base.
Um logaritmo responde à pergunta "a que potência a base deve ser elevada para produzir este número?" Por exemplo, log(8, 2) é 3, pois 2 elevado à potência de 3 é igual a 8. Esta página aborda a sintaxe, bases comuns, comportamento em casos especiais e um uso prático.
Sintaxe
log(float $num, float $base = M_E): float| Parâmetro | Descrição |
|---|---|
$num | O número cujo logaritmo você deseja. Deve ser positivo para um resultado real. |
$base | Opcional. A base logarítmica. O padrão é M_E (≈ 2.71828), resultando no logaritmo natural. |
A função retorna um float: o logaritmo de $num na base especificada.
Exemplo básico: logaritmo natural
Ao chamar log() com um único argumento, você obtém o logaritmo natural (base e):
Usando uma base personalizada
Passe um segundo argumento para calcular o logaritmo em uma base diferente. Isso é útil para logaritmos na base 2 (binário) ou na base 10 (decimal):
<?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 a base 10 especificamente, o PHP também oferece a função dedicada log10(), e para valores pequenos próximos a 1 existe log1p(), que é mais precisa do que log(1 + x).
Casos especiais a observar
O logaritmo matemático só está definido para números positivos, portanto log() retorna valores float especiais fora desse intervalo:
<?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 propagam silenciosamente em operações aritméticas, valide a entrada antes de chamar log():
<?php
$value = -5;
if ($value > 0) {
echo log($value);
} else {
echo "log() requires a positive number";
}
// Outputs: log() requires a positive number
?>É possível detectar esses resultados com is_nan() e is_infinite() caso um valor chegue a log() sem verificação.
Um caso de uso prático
Logaritmos são comuns quando você precisa saber quantos dígitos um número tem, ou para escalar dados. Por exemplo, o número de dígitos decimais de um inteiro positivo é floor(log10($n)) + 1:
<?php
$n = 12345;
$digits = (int) floor(log10($n)) + 1;
echo "{$n} has {$digits} digits"; // Outputs: 12345 has 5 digits
?>Funções relacionadas
log10()— logaritmo na base 10.log1p()—log(1 + x)preciso para valores pequenos dex.exp()— o inverso do logaritmo natural (eelevado a uma potência).pow()— eleva um número a uma potência.sqrt()— raiz quadrada.- Funções Matemáticas PHP — visão geral de todos os helpers matemáticos.
Conclusão
A função log() é uma ferramenta confiável para cálculos logarítmicos em PHP. Com seu segundo argumento opcional, ela suporta qualquer base, enquanto o padrão de logaritmo natural cobre a necessidade mais comum. Lembre-se dos casos especiais — log(0) é -INF e log() de um número negativo é NAN — e valide a entrada para manter seus cálculos robustos.