php - tool - freshdesk versions




Double nicht(!!) Operator in PHP (4)

Was macht der double not- Operator in PHP?

Beispielsweise:

return !! $row;

Was würde der obige Code tun?


"nicht nicht" ist in vielen Sprachen eine bequeme Methode, um zu verstehen, welchen Wahrheitswert die Sprache dem Ergebnis eines Ausdrucks zuordnet. Zum Beispiel in Python :

>>> not not []
False
>>> not not [False]
True

Es kann an Orten nützlich sein, an denen Sie einen komplexen Wert auf etwas wie "Gibt es überhaupt einen Wert?" Reduzieren möchten.


Das bedeutet, wenn $row einen truthy Wert hat, wird true , andernfalls false und in einen booleschen Wert umgewandelt.

Hier finden Sie Beispielausdrücke für die boolesche Konvertierung von PHP-Dokumenten.

Expression             Boolean
$x = "";               FALSE
$x = null;             FALSE
var $x;                FALSE
$x is undefined        FALSE
$x = array();          FALSE
$x = array('a', 'b');  TRUE
$x = false;            FALSE
$x = true;             TRUE
$x = 1;                TRUE
$x = 42;               TRUE
$x = 0;                FALSE
$x = -1;               TRUE
$x = "1";              TRUE
$x = "0";              FALSE
$x = "-1";             TRUE
$x = "php";            TRUE
$x = "true";           TRUE
$x = "false";          TRUE

Es ist das gleiche (oder fast das gleiche - es könnte ein Eckfall sein) als Casting zu Bool. Wenn $row zu true würde, dann !! $row !! $row ist auch wahr.

Aber wenn Sie (bool) $row erreichen wollen, sollten Sie wahrscheinlich genau das verwenden - und nicht einige "interessante" Ausdrücke;)


Es ist nicht der "Doppel-Nicht-Operator", es ist der Nicht- Operator, der zweimal angewendet wird. Das Recht ! führt unabhängig vom Operanden zu einem booleschen Wert . Dann der Linke ! negiert diesen booleschen Wert.

Dies bedeutet, dass Sie für jeden wahren Wert (Zahlen ungleich Null, nicht leere Strings und Arrays usw.) den booleschen Wert TRUE und für jeden falschen Wert (0, 0.0, NULL , leere Strings oder leere Arrays) erhalten erhält den booleschen Wert FALSE .

Es entspricht funktional einer Umwandlung in boolean :

return (bool)$row;




operators