W3docs

abs()

Die Funktion abs() in PHP gibt den absoluten Wert einer Zahl zurück – Syntax, Rückgabetypen, Sonderfälle und typische Anwendungen.

Die Funktion abs() gibt den absoluten Wert einer Zahl zurück – also ihren Betrag ohne Vorzeichen. Anders ausgedrückt: Sie gibt an, wie weit die Zahl von null entfernt ist. Daher liefern abs(-5) und abs(5) beide den Wert 5. Diese Seite erläutert die Syntax, Rückgabetypen, wichtige Sonderfälle und die häufigsten Anwendungsfälle in der Praxis.

Syntax

abs(int|float $num): int|float
  • $num — die Zahl, deren absoluten Wert Sie berechnen möchten (Integer oder Float).
  • Rückgabewert — der absolute Wert von $num. Der Rückgabetyp entspricht dem Eingabetyp: Übergeben Sie einen Integer, erhalten Sie einen Integer; übergeben Sie einen Float, erhalten Sie einen Float.

Einfaches Beispiel

php— editable, runs on the server

Dies gibt 5 aus. Wir beginnen mit einem negativen Wert, rufen abs() auf, um das Vorzeichen zu entfernen, und geben das Ergebnis mit echo aus. Ein positiver Eingabewert wird unverändert zurückgegeben.

Integer vs. Float

abs() behält den numerischen Typ bei, was relevant ist, wenn Sie Ergebnisse vergleichen oder die Ausgabe formatieren:

<?php
echo abs(-7);      // 7   (int)
echo "\n";
echo abs(-7.5);    // 7.5 (float)
echo "\n";
var_dump(abs(-7));   // int(7)
var_dump(abs(-7.5)); // float(7.5)
?>

Numerische Strings werden ebenfalls akzeptiert – abs("-3.2") gibt den Float 3.2 zurück. Das Übergeben eines nicht-numerischen Strings löst jedoch in PHP 8+ einen TypeError aus. Validieren Sie daher Eingaben mit is_numeric(), wenn diese von außerhalb Ihres Codes stammen.

Praktische Anwendung: Abstand zwischen zwei Werten

Der häufigste Grund, abs() zu verwenden, ist die Messung der Differenz zwischen zwei Zahlen, ohne zu berücksichtigen, welche davon größer ist:

<?php
$expected = 100;
$actual   = 87;

$difference = abs($expected - $actual);

echo "You are off by {$difference}.";
?>

Dies gibt You are off by 13. aus – unabhängig davon, ob $actual den Wert 87 oder 113 hat. Die Reihenfolge der Subtraktion spielt keine Rolle mehr. Dasselbe Muster eignet sich für Toleranzprüfungen (if (abs($a - $b) < 0.001)), Preisunterschiede und Koordinatenabstände.

Sonderfälle und Fallstricke

  • Null bleibt null. abs(0) ergibt 0 und abs(-0.0) ergibt 0.0.
  • Bereits positiv? abs() gibt den Wert unverändert zurück, sodass es sicher ist, die Funktion defensiv aufzurufen, ohne zuvor das Vorzeichen zu prüfen.
  • Überlauf bei PHP_INT_MIN. abs(PHP_INT_MIN) kann nicht als Integer dargestellt werden (der positive Gegenwert ist um eins größer als PHP_INT_MAX), weshalb PHP ihn als Float zurückgibt, um einen Überlauf zu vermeiden.
  • Keine Rundung. abs() entfernt nur das Vorzeichen. Um den Dezimalteil zu entfernen, verwenden Sie floor(), ceil() oder round().

Verwandte Funktionen

  • round() — rundet einen Float auf eine angegebene Genauigkeit.
  • floor() / ceil() — rundet auf den nächstkleineren / nächstgrößeren Integer.
  • pow() und sqrt() — Potenzierung und Quadratwurzeln.
  • max() / min() — gibt den größten oder kleinsten von mehreren Werten zurück.
  • is_numeric() — prüft, ob ein Wert eine Zahl ist, bevor mathematische Operationen durchgeführt werden.

Einen umfassenderen Überblick über PHPs numerische Hilfsfunktionen finden Sie in der PHP Math-Referenz.

Fazit

abs() ist ein kleines, aber häufig genutztes Werkzeug: Es gibt den Betrag einer Zahl unabhängig vom Vorzeichen zurück, behält den Eingabetyp bei und ist besonders nützlich, wenn Sie den Abstand zwischen zwei Werten benötigen. Denken Sie daran, dass die Funktion nicht rundet, und beachten Sie den Sonderfall PHP_INT_MIN, bei dem das Ergebnis als Float zurückgegeben wird.

Übungen

Übung
Welche Aufgabe hat die Funktion abs() in PHP?
Welche Aufgabe hat die Funktion abs() in PHP?
Was this page helpful?