Start · Sprachen · PHP · Referenz · variant_eqv

variant_eqv

Funktion

Führt eine bitweise Äquivalenz (EQV) zweier Variant-Werte durch und gibt das Ergebnis als Variant zurück.

seit PHP 5.0.0 Kategorie: misc

Signatur

variant_eqv(mixed $left, mixed $right): variant

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

Typ
variant
Beschreibung
Gibt ein 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
?>
-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)
?>
-1

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