W3docs

log()

La funzione log() in PHP calcola il logaritmo naturale di un numero o il logaritmo in una base specificata.

La funzione log() in PHP restituisce il logaritmo di un numero. Per impostazione predefinita restituisce il logaritmo naturale — il logaritmo in base e (numero di Eulero, approssimativamente 2.71828) — ma è possibile passare un secondo argomento per calcolare il logaritmo in qualsiasi base.

Un logaritmo risponde alla domanda "a quale potenza deve essere elevata la base per ottenere questo numero?" Ad esempio, log(8, 2) è 3, perché 2 elevato alla potenza di 3 è uguale a 8. Questa pagina tratta la sintassi, le basi più comuni, il comportamento nei casi limite e un caso d'uso pratico.

Sintassi

log(float $num, float $base = M_E): float
ParametroDescrizione
$numIl numero di cui si vuole calcolare il logaritmo. Deve essere positivo per un risultato reale.
$baseFacoltativo. La base logaritmica. Il valore predefinito è M_E (≈ 2.71828), che fornisce il logaritmo naturale.

La funzione restituisce un float: il logaritmo di $num nella base specificata.

Esempio base: logaritmo naturale

Quando si chiama log() con un singolo argomento, si ottiene il logaritmo naturale (base e):

php— editable, runs on the server

Utilizzo di una base personalizzata

Passare un secondo argomento per calcolare il logaritmo in una base diversa. Questo è utile per i logaritmi in base 2 (binario) o in base 10 (decimale):

<?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)
?>

Per la base 10 in modo specifico, PHP offre anche la funzione dedicata log10(), mentre per valori piccoli vicino a 1 esiste log1p(), che è più precisa di log(1 + x).

Casi limite da tenere a mente

Il logaritmo matematico è definito solo per numeri positivi, quindi log() restituisce valori float speciali al di fuori di tale intervallo:

<?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"
?>

Poiché NAN e INF si propagano silenziosamente attraverso le operazioni aritmetiche, è opportuno validare l'input prima di chiamare log():

<?php
$value = -5;

if ($value > 0) {
    echo log($value);
} else {
    echo "log() requires a positive number";
}
// Outputs: log() requires a positive number
?>

È possibile rilevare questi risultati con is_nan() e is_infinite() se un valore raggiunge log() senza essere stato verificato.

Un caso d'uso pratico

I logaritmi sono comuni quando si ha bisogno di sapere quante cifre ha un numero, o per ridimensionare i dati. Ad esempio, il numero di cifre decimali di un intero positivo è floor(log10($n)) + 1:

<?php
$n = 12345;
$digits = (int) floor(log10($n)) + 1;

echo "{$n} has {$digits} digits"; // Outputs: 12345 has 5 digits
?>

Funzioni correlate

  • log10() — logaritmo in base 10.
  • log1p()log(1 + x) accurato per valori piccoli di x.
  • exp() — l'inverso del logaritmo naturale (e elevato a una potenza).
  • pow() — eleva un numero a una potenza.
  • sqrt() — radice quadrata.
  • Funzioni matematiche PHP — panoramica di tutte le funzioni matematiche.

Conclusione

La funzione log() è uno strumento affidabile per i calcoli logaritmici in PHP. Con il suo secondo argomento facoltativo gestisce qualsiasi base, mentre il valore predefinito del logaritmo naturale copre l'esigenza più comune. Ricordare i casi limite — log(0) è -INF e log() di un numero negativo è NAN — e validare l'input per mantenere i calcoli robusti.

Pratica

Pratica
Cosa restituisce log(8, 2) in PHP?
Cosa restituisce log(8, 2) in PHP?
Was this page helpful?