Signatur
Beschreibung
variant_pow führt eine Potenzierung zweier Werte durch, die als COM-variant-Objekte oder als einfache PHP-Skalare übergeben werden können. Das Ergebnis entspricht der mathematischen Operation left ^ right (d. h. left hoch right).
Die Funktion ist Bestandteil der PHP-COM-Erweiterung und dient dazu, Rechenoperationen auf variant-Objekten durchzuführen, bei denen der Typ des Ergebnisses durch die Variant-Typregeln von COM bestimmt wird – ähnlich wie in Visual Basic oder anderen COM-fähigen Umgebungen. Dies ist besonders relevant, wenn mit Windows-COM-Objekten interagiert wird, bei denen Typen implizit konvertiert werden müssen.
Werden einfache PHP-Skalare (z. B. int oder float) übergeben, werden diese intern automatisch in variant-Objekte gewandelt, bevor die Operation ausgeführt wird. Das zurückgegebene Objekt ist stets vom Typ variant.
Die Funktion ist nur auf Windows-Systemen verfügbar, auf denen die COM-Erweiterung aktiv ist. Auf anderen Plattformen steht sie nicht zur Verfügung.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $left Pflicht | mixed | Die Basis der Potenzierung. Kann ein variant-Objekt oder ein PHP-Skalar (z. B. int, float) sein. |
|
| $right Pflicht | mixed | Der Exponent der Potenzierung. Kann ein variant-Objekt oder ein PHP-Skalar (z. B. int, float) sein. |
Rückgabewert
variant-Objekt zurück, das das Ergebnis der Potenzierung left hoch right enthält. Der konkrete Variant-Typ des Ergebnisses wird durch die COM-Typregeln bestimmt.Beispiele
Einfache Potenzierung zweier Ganzzahlen
<?php
// 2 hoch 10 berechnen
$basis = new variant(2, VT_I4);
$exponent = new variant(10, VT_I4);
$ergebnis = variant_pow($basis, $exponent);
echo (int) $ergebnis; // 1024
?>
Potenzierung mit PHP-Skalaren ohne explizite variant-Objekte
<?php
// PHP-Skalare werden automatisch in variant umgewandelt
$ergebnis = variant_pow(3, 4); // 3^4 = 81
echo (float) $ergebnis; // 81
?>
Potenzierung mit Fließkommazahlen
<?php
// 2.5 hoch 3
$ergebnis = variant_pow(2.5, 3);
echo (float) $ergebnis; // 15.625
?>
// Wichtig · Fallstricke
Plattformabhängigkeit: variant_pow ist ausschließlich unter Windows verfügbar und setzt die aktivierte COM-Erweiterung (php_com_dotnet.dll) voraus. Auf Linux- oder macOS-Systemen ist die Funktion nicht definiert.
Typsicherheit: Das Ergebnis ist immer ein variant-Objekt. Für weitere Berechnungen in PHP sollte der Wert explizit mit einem Cast wie (int), (float) oder (string) konvertiert werden, um unerwartetes Verhalten durch implizite Typumwandlungen zu vermeiden.
Alternative: Außerhalb des COM-Kontexts sollte stattdessen die native PHP-Funktion pow() oder der Operator ** (seit PHP 5.6) verwendet werden, die plattformunabhängig und deutlich performanter sind.