Двойной не (!!) оператор в PHP

Что делает двойной оператор не в PHP?

Например:

return !! $row; 

Что сделал бы код выше?

Solutions Collecting From Web of "Двойной не (!!) оператор в PHP"

Это не «двойной оператор», это не оператор, который применяется дважды. Правильно ! приведет к логическому, независимо от операнда . Тогда левая ! будет отрицать это логическое значение.

Это означает, что для любого истинного значения (числа, отличные от нуля, непустых строк и массивов и т. Д.) Вы получите логическое значение TRUE , а для любого ложного значения (0, 0.0, NULL , пустые строки или пустые массивы) вы получит логическое значение FALSE .

Он функционально эквивалентен приведению в boolean :

 return (bool)$row; 

Это то же самое (или почти то же самое – может быть, какой-то угловой случай) как литье в bool. Если $row будет отбрасывать true, тогда !! $row !! $row также верен.

Но если вы хотите достичь (bool) $row , вы, вероятно, должны использовать именно это, а не некоторые «интересные» выражения;)

Это означает, что если $row имеет правдивое значение, оно вернет true , иначе false , преобразование в логическое значение.

Вот пример выражения для логического преобразования из php docs.

 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 

«не» – это удобный способ на многих языках понять, что значение истинности язык присваивает результату любого выражения. Например, в Python :

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

Это может быть удобно в тех местах, где вы хотите уменьшить сложную ценность до чего-то вроде «есть ли вообще ценность?».