Signatur
Beschreibung
variant_eqv() berechnet die bitweise Äquivalenz zwischen zwei Variant-Werten. Die bitweise Äquivalenz ist das logische Gegenstück zur XOR-Operation: Zwei Bits gelten als äquivalent, wenn sie gleich sind (beide 0 oder beide 1), andernfalls ist das Ergebnisbit 0. Formal gilt: EQV(a, b) = NOT (a XOR b).
Die Funktion stammt aus der COM-Erweiterung von PHP und ist vorrangig für die Interoperabilität mit Windows-COM-Objekten und deren Variant-Datentypen gedacht. Sie operiert auf Werten des Typs variant, wie er im COM/OLE-Umfeld üblich ist. PHP konvertiert normale Skalare automatisch in kompatible Variant-Werte, wenn sie übergeben werden.
Das Ergebnis wird als variant-Objekt zurückgegeben. Es ist sinnvoll, diese Funktion ausschließlich in Szenarien mit COM-Objekten zu verwenden, da für rein PHP-interne Bitoperationen die nativen PHP-Operatoren (~, ^, &, |) effizienter und lesbarer sind.
Hinweis: Die Funktion ist nur auf Windows-Systemen mit aktivierter com_dotnet-Erweiterung verfügbar.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $left Pflicht | mixed | Der linke Operand der Äquivalenzoperation. Kann ein variant-Objekt oder ein PHP-Skalar sein, der automatisch konvertiert wird. |
|
| $right Pflicht | mixed | Der rechte Operand der Äquivalenzoperation. Kann ein variant-Objekt oder ein PHP-Skalar sein, der automatisch konvertiert wird. |
Rückgabewert
variant-Objekt zurück, das das Ergebnis der bitweisen Äquivalenzoperation enthält. Das Ergebnis entspricht NOT (left XOR right) auf Bitebene.Beispiele
Einfache bitweise Äquivalenz zweier Ganzzahlen
<?php
// Bitweise Äquivalenz von 12 (1100) und 10 (1010)
// XOR: 0110
// NOT: ...11111001 (als 32-Bit-Zahl = -7)
$result = variant_eqv(12, 10);
echo (int) $result; // Ausgabe: -7
?>
Äquivalenz mit gleichen Werten
<?php
// Gleiche Werte: EQV ergibt alle Bits gesetzt (= -1 als vorzeichenbehaftete Ganzzahl)
$a = new variant(0b1010, VT_I4);
$b = new variant(0b1010, VT_I4);
$result = variant_eqv($a, $b);
echo (int) $result; // Ausgabe: -1 (alle Bits gesetzt)
?>
// Wichtig · Fallstricke
Plattformabhängigkeit: variant_eqv() ist ausschließlich auf Windows-Systemen verfügbar, auf denen die PHP-Erweiterung com_dotnet geladen ist. Auf Linux/macOS-Systemen führt ein Aufruf zu einem fatalen Fehler.
Typverhalten: Das Ergebnis hängt vom internen Variant-Typ der Operanden ab. Bei ganzzahligen Typen (VT_I4 etc.) entspricht das Ergebnis einer 32-Bit-Äquivalenz. Bei Boolean-Werten verhält sich EQV wie ein logisches XNOR.
Für einfache PHP-interne Bitoperationen sollte stattdessen der native Ausdruck ~($a ^ $b) verwendet werden, da dieser plattformunabhängig funktioniert.