Signatur
Beschreibung
variant_idiv() ist Teil der COM/VARIANT-Erweiterung von PHP und führt eine ganzzahlige Division zweier Variant-Werte durch. Beide Operanden werden dabei zunächst in Integer konvertiert, bevor die Division ausgeführt wird – es handelt sich also um eine Ganzzahldivision ohne Nachkommastellen.
Die Funktion entspricht dem \-Operator in Visual Basic bzw. dem COM-internen VarIdiv-Vorgang. Sie ist besonders relevant, wenn man mit COM-Objekten oder Variant-Werten aus Windows-Umgebungen arbeitet und das exakte Verhalten der COM-Typkonvertierung benötigt.
Im Gegensatz zu einer normalen Division mit / wird das Ergebnis auf den nächsten ganzzahligen Wert in Richtung null abgeschnitten (Truncation). Ist der Divisor null, wird ein COM-Fehler ausgelöst.
Die Funktion steht nur auf Windows-Systemen zur Verfügung, auf denen die php_com_dotnet-Erweiterung geladen ist.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $left Pflicht | mixed | Der Dividend – ein Variant-Wert oder ein skalarer PHP-Wert, der als Variant interpretiert wird. | |
| $right Pflicht | mixed | Der Divisor – ein Variant-Wert oder ein skalarer PHP-Wert, der als Variant interpretiert wird. Darf nicht null (0) sein. |
Rückgabewert
com_exception ausgelöst.Beispiele
Einfache ganzzahlige Division mit Variant-Werten
<?php
// Voraussetzung: COM-Erweiterung unter Windows aktiv
$a = new VARIANT(10, VT_I4);
$b = new VARIANT(3, VT_I4);
$ergebnis = variant_idiv($a, $b);
echo $ergebnis; // 3, da 10 / 3 = 3 (Ganzzahl, abgeschnitten)
?>
Ganzzahldivision mit Gleitkommazahlen – Truncation statt Rundung
<?php
// Beide Werte werden vor der Division in Integer konvertiert
$a = new VARIANT(9.9, VT_R8);
$b = new VARIANT(2.9, VT_R8);
// 9.9 -> 9 (int), 2.9 -> 2 (int) => 9 / 2 = 4 (abgeschnitten)
$ergebnis = variant_idiv($a, $b);
echo $ergebnis;
?>
// Wichtig · Fallstricke
Plattformabhängigkeit: variant_idiv() steht ausschließlich auf Windows-Systemen zur Verfügung, auf denen die com_dotnet-Erweiterung in der php.ini aktiviert ist (extension=php_com_dotnet.dll).
Division durch null: Wird 0 als Divisor übergeben, löst die Funktion eine com_exception aus. Eine entsprechende Prüfung des Divisors vor dem Aufruf ist daher empfehlenswert.
Typkonvertierung: Die Konvertierung beider Operanden in Integer erfolgt nach den COM/VBA-Regeln: Gleitkommazahlen werden kaufmännisch gerundet, bevor sie in Integer umgewandelt werden – das kann zu unerwarteten Ergebnissen führen, wenn man Python-/PHP-übliche Truncation erwartet.