在PHP中双重(!!)运算符

操作符在PHP中做什么?

例如:

return !! $row; 

上面的代码会做什么?

这不是“双重不算”,而是两个不算 。 正确! 将导致一个布尔值, 而不pipe操作数 。 然后左! 将否定布尔值。

这意味着对于任何真值(非零数字,非空string和数组等),您将获得布尔值TRUE ,并且对于任何假值(0,0.0, NULL ,空string或空数组),您会得到布尔值FALSE

它在function上等同于转换为boolean

 return (bool)$row; 

这是相同的(或几乎相同 – 可能有一些angular落的情况下)铸造到布尔。 如果$row投射为真,那么!! $row !! $row也是如此。

但是如果你想实现(bool) $row ,你可能应该使用 – 而不是一些“有趣的”expression式;)

这意味着如果$row有一个真值,它将返回true ,否则返回false ,转换为布尔值。

这里是从PHP文档布尔转换的示例expression式。

 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 

“不”不是一种很方便的方式来理解语言赋予任何expression结果的真值。 例如,在Python中 :

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

在想要将复杂价值降低到“有价值”的地方,可以方便。