在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
在想要将复杂价值降低到“有价值”的地方,可以方便。