W3docs

log()

Die Funktion log() in PHP berechnet den natürlichen Logarithmus einer Zahl oder den Logarithmus zu einer beliebigen Basis.

Die Funktion log() in PHP gibt den Logarithmus einer Zahl zurück. Standardmäßig liefert sie den natürlichen Logarithmus — also den Logarithmus zur Basis e (Eulersche Zahl, ungefähr 2,71828) — es kann jedoch ein zweites Argument übergeben werden, um den Logarithmus zu einer beliebigen Basis zu berechnen.

Ein Logarithmus beantwortet die Frage „Auf welche Potenz muss die Basis erhöht werden, um diese Zahl zu erhalten?" Beispielsweise ist log(8, 2) gleich 3, weil 2 hoch 3 gleich 8 ergibt. Diese Seite behandelt die Syntax, gängige Basen, Randfall-Verhalten und einen praktischen Anwendungsfall.

Syntax

log(float $num, float $base = M_E): float
ParameterBeschreibung
$numDie Zahl, deren Logarithmus berechnet werden soll. Muss positiv sein, um ein reelles Ergebnis zu liefern.
$baseOptional. Die Logarithmenbasis. Standardmäßig M_E (≈ 2,71828), was den natürlichen Logarithmus ergibt.

Die Funktion gibt einen float zurück: den Logarithmus von $num zur angegebenen Basis.

Einfaches Beispiel: natürlicher Logarithmus

Wenn log() mit einem einzigen Argument aufgerufen wird, erhält man den natürlichen Logarithmus (Basis e):

php— editable, runs on the server

Verwendung einer benutzerdefinierten Basis

Ein zweites Argument kann übergeben werden, um den Logarithmus zu einer anderen Basis zu berechnen. Dies ist praktisch für Logarithmen zur Basis 2 (binär) oder zur Basis 10 (Zehnerlogarithmus):

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

Für die Basis 10 bietet PHP auch die dedizierte Funktion log10(), und für kleine Werte nahe 1 gibt es log1p(), die genauer ist als log(1 + x).

Randfälle, auf die zu achten ist

Der mathematische Logarithmus ist nur für positive Zahlen definiert, daher gibt log() außerhalb dieses Bereichs spezielle Float-Werte zurück:

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

Da sich NAN und INF still durch Berechnungen fortpflanzen, sollte die Eingabe vor dem Aufruf von log() validiert werden:

<?php
$value = -5;

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

Mit is_nan() und is_infinite() können diese Ergebnisse erkannt werden, falls ein Wert unkontrolliert in log() gelangt.

Ein praktischer Anwendungsfall

Logarithmen werden häufig verwendet, wenn man wissen möchte, wie viele Stellen eine Zahl hat, oder um Daten zu skalieren. Beispielsweise ist die Anzahl der Dezimalstellen einer positiven ganzen Zahl floor(log10($n)) + 1:

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

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

Verwandte Funktionen

  • log10() — Logarithmus zur Basis 10.
  • log1p() — Genaues log(1 + x) für kleine x.
  • exp() — Die Umkehrfunktion des natürlichen Logarithmus (e hoch eine Potenz).
  • pow() — Eine Zahl auf eine Potenz erhöhen.
  • sqrt() — Quadratwurzel.
  • PHP Math Functions — Übersicht aller mathematischen Hilfsfunktionen.

Fazit

Die Funktion log() ist ein zuverlässiges Werkzeug für logarithmische Berechnungen in PHP. Mit dem optionalen zweiten Argument kann jede Basis verwendet werden, während der natürliche Logarithmus als Standard den häufigsten Bedarf abdeckt. Die Randfälle sollten beachtet werden — log(0) ergibt -INF und log() einer negativen Zahl liefert NAN — und die Eingabe sollte validiert werden, um Berechnungen robust zu halten.

Übungsaufgaben

Übung
Was gibt log(8, 2) in PHP zurück?
Was gibt log(8, 2) in PHP zurück?
Was this page helpful?