Signatur
Beschreibung
gmp_add() gehört zur GNU Multiple Precision (GMP)-Erweiterung und ermöglicht die Addition von Ganzzahlen beliebiger Größe – also weit über den Wertebereich von PHP-nativen int-Typen hinaus. Dies ist besonders nützlich in der Kryptografie, bei der Verarbeitung großer Primzahlen oder in wissenschaftlichen Berechnungen.
Die Argumente können als GMP-Objekte, als PHP-int-Werte oder als numerische Zeichenketten (auch in anderen Zahlensystemen wie Hexadezimal oder Oktal) übergeben werden. PHP konvertiert diese intern automatisch in GMP-Objekte.
Das Ergebnis ist stets ein GMP-Objekt. Um es als normale PHP-Zahl oder Zeichenkette weiterzuverwenden, muss es mit gmp_intval() oder gmp_strval() konvertiert werden.
Negative Zahlen werden vollständig unterstützt, da GMP vorzeichenbehaftete Arithmetik beherrscht.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $num1 Pflicht | GMP|int|string | Erster Summand. Kann ein GMP-Objekt, ein PHP-Integer oder eine numerische Zeichenkette (dezimal, hexadezimal mit Präfix 0x oder oktal mit Präfix 0) sein. |
|
| $num2 Pflicht | GMP|int|string | Zweiter Summand. Gleiche Typen wie num1 sind erlaubt. |
Rückgabewert
GMP-Objekt, das die Summe der beiden Operanden darstellt. Für die Ausgabe als Zeichenkette gmp_strval(), als Integer gmp_intval() verwenden.Beispiele
Einfache Addition zweier großer Zahlen
<?php
// GMP-Erweiterung muss aktiviert sein
$a = gmp_init('99999999999999999999');
$b = gmp_init('1');
$summe = gmp_add($a, $b);
echo gmp_strval($summe); // Ausgabe als Zeichenkette
Addition mit gemischten Typen (int und GMP-String)
<?php
// Direkte Übergabe von int und String — PHP konvertiert automatisch
$ergebnis = gmp_add(42, '1000000000000000000000');
echo gmp_strval($ergebnis);
Addition negativer Zahlen
<?php
$a = gmp_init('-500');
$b = gmp_init('300');
$summe = gmp_add($a, $b);
echo gmp_strval($summe);
Kryptografisches Beispiel: Modulare Addition großer Primzahlen
<?php
// Typisches Muster in Public-Key-Kryptografie
$p = gmp_init('FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F', 16);
$q = gmp_init('1');
$summe = gmp_add($p, $q);
echo gmp_strval($summe, 16); // Ergebnis hexadezimal
// Wichtig · Fallstricke
Voraussetzung: Die GMP-Erweiterung muss in PHP aktiviert sein (--with-gmp beim Kompilieren oder als Shared Extension geladen). Ohne GMP führt der Aufruf zu einem fatalen Fehler.
Ab PHP 5.6 werden GMP-Objekte zurückgegeben; in älteren Versionen waren es GMP-Ressourcen. Code, der auf Ressourcen prüft (is_resource()), muss entsprechend angepasst werden.
Für sehr leistungskritische Anwendungen mit vielen Operationen empfiehlt es sich, GMP-Objekte wiederzuverwenden statt sie wiederholt aus Zeichenketten zu initialisieren, um Konvertierungskosten zu vermeiden.