Start · Sprachen · PHP · Referenz · variant_idiv

variant_idiv

Funktion

Wandelt zwei Variant-Werte in Integer um und gibt das ganzzahlige Ergebnis der Division zurück.

seit PHP 5.0.0 Kategorie: misc

Signatur

variant_idiv(mixed $left, mixed $right): mixed

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

Typ
mixed
Beschreibung
Gibt ein Variant-Objekt zurück, das das ganzzahlige Ergebnis der Division enthält. Bei einem Divisor von null wird ein 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)
?>
3

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;
?>
4

// 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.