Start · Sprachen · PHP · Referenz · variant_neg

variant_neg

Funktion

Führt eine logische Negation eines Variant-Wertes durch und gibt das negierte Ergebnis als Variant zurück.

seit PHP 5.0.0 Kategorie: misc

Signatur

variant_neg(mixed $variant): mixed

Beschreibung

variant_neg() ist eine Windows-spezifische PHP-Funktion aus der COM/VARIANT-Erweiterung. Sie führt eine logische Negation (NOT) eines übergebenen Variant-Wertes durch und gibt das Ergebnis als neuen Variant-Wert zurück.

Die Funktion entspricht dem VBScript-Operator Not und wird hauptsächlich beim Umgang mit COM-Objekten und deren VARIANT-Datentypen verwendet, wie sie beispielsweise in Windows-Automatisierungsszenarien (z. B. Microsoft Office, ActiveX) auftreten.

Die logische Negation kehrt boolesche Werte um: Aus true wird false und umgekehrt. Bei numerischen Varianten wird das bitweise Komplement berechnet, ähnlich wie der PHP-Operator ~ bei Ganzzahlen.

Diese Funktion ist nur auf Windows-Systemen verfügbar, auf denen die PHP-COM-Erweiterung (php_com_dotnet.dll) geladen ist. Auf anderen Plattformen steht sie nicht zur Verfügung.

Parameter

Name Typ Default Beschreibung
$variant Pflicht mixed Ein VARIANT-Wert, ein com-Objekt oder ein skalarer PHP-Wert, der in einen Variant umgewandelt werden kann. Dieser Wert wird negiert.

Rückgabewert

Typ
mixed
Beschreibung
Gibt einen neuen Variant-Wert zurück, der das logische NOT (bzw. bitweise Komplement) des übergebenen Wertes darstellt. Bei einem booleschen true wird false zurückgegeben und umgekehrt. Bei numerischen Werten wird das bitweise Komplement zurückgegeben.

Beispiele

Logische Negation eines booleschen Variant-Wertes

<?php
// Voraussetzung: Windows mit aktiver COM-Erweiterung
$varTrue  = new VARIANT(true,  VT_BOOL);
$varFalse = new VARIANT(false, VT_BOOL);

$resultA = variant_neg($varTrue);
$resultB = variant_neg($varFalse);

var_dump((bool) $resultA); // bool(false)
var_dump((bool) $resultB); // bool(true)
?>
bool(false) bool(true)

Negation eines numerischen Variant-Wertes

<?php
// Voraussetzung: Windows mit aktiver COM-Erweiterung
$varNum = new VARIANT(5, VT_I4); // Ganzzahl 5

$result = variant_neg($varNum);

// Bitweises Komplement von 5 ist -6 (als 32-Bit-Integer)
echo (int) $result; // -6
?>
-6

// Wichtig · Fallstricke

Plattformabhängigkeit: variant_neg() ist ausschließlich unter Windows verfügbar und erfordert die geladene COM/DOTNET-PHP-Erweiterung. Der Aufruf auf Linux oder macOS führt zu einem fatalen Fehler (Call to undefined function).

Unterschied zu PHP-NOT-Operator: Der PHP-Operator ! gibt immer einen nativen PHP-bool zurück, während variant_neg() einen VARIANT-Typ zurückgibt, was bei der Weitergabe an COM-Objekte wichtig sein kann.

Numerische Typen: Bei Ganzzahl-Varianten entspricht das Ergebnis dem bitweisen Komplement (~$n), nicht einer arithmetischen Vorzeichenumkehr. Für die arithmetische Negation (Vorzeichen umkehren) sollte stattdessen variant_sub() oder variant_mul() mit -1 verwendet werden.