double not运算符在PHP中做什么?
例如:
return !! $row;
上面的代码会做什么?
double not运算符在PHP中做什么?
例如:
return !! $row;
上面的代码会做什么?
Answers:
这不是“ double not运算符”,它是两次应用的not运算符。无论操作数如何,该权利!都将导致布尔值。然后左边将否定该布尔值。!
这意味着对于任何真值(非零数字,非空字符串和数组等),您将获得布尔值TRUE;对于任何假值(0、0.0 NULL、、空字符串或空数组),您将获得布尔值FALSE。
它在功能上等同于强制转换为boolean:
return (bool)$row;
!!等于(bool)?还是会根据使用哪种机器码来运行不同的机器码?
!value,如果刘海的偶数为奇数,则它将与相同(bool) value。
与强制转换为bool相同(或几乎相同-可能会有一些极端情况)。如果$row将其转换为true,则!! $row也为true。
但是,如果您想实现(bool) $row,则可能应该只使用-而不是使用一些“有趣的”表达式;)
!!是C(++)编程中剩下的一种习惯。在C语言中,进行强制转换并不像在PHP中那样容易,所以您会遇到许多不同的问题,还会编译警告,因此人们会使用来强制转换!!。
operator!是可重载的,使用它C++会很危险。同样,您不能在C中强制转换结构,也不能!与它们一起使用。同样,如果某些东西可以取反,那么您很可能能够从返回int的函数中返回它,这几乎使它成为布尔值。您确定要谈论C吗?
!!并不像您所说的那样“有趣”。从C到JavaScript到处都是。
这意味着如果$row具有真实值,则将返回true,否则返回false布尔值。
这是从php文档到布尔转换的示例表达式。
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
另一种更人性化(也许更简单)的方式来“阅读”不是:
首先 '!' 做两件事:将值“转换”为布尔值,然后输出相反的值。因此,如果该值是“虚假”值,它将为真。
第二 '!' 只是输出与第一个相反的内容。
因此,基本上,输入值可以是任何值,可以是字符串,但是您需要布尔输出,因此请使用第一个“!”。此时,如果输入值为'falsy'时希望为TRUE,则在此处停止并仅使用一个'!';否则,如果在输入值“ truthy”时希望为TRUE,则添加另一个“!”。
return (bool) $row;