我明白为什么“回声!0;” 返回 1。我不明白为什么 echo !!!0 也返回 1。请让我知道我缺少什么。
问问题
980 次
5 回答
6
您缺少的!
是not运算符,这0
是一个错误的值:
!0;//oposite of "false" ==> true ==> 1
!!!0;//oposite of the oposite of the oposite ==> oposite
当一个布尔值被回显时,它被转换成它的实际值(如果有的话)。为了使某事成为真实,它必须是真实的。true
也是如此1
。echo false;
同样,正如 deceze 指出的那样,对于某些东西来说,它不可能是假的,所以显示为一个空字符串。
绝对清楚,您应该将其!!!0
视为“逆向心理学”的一些幼稚尝试。
Don't give nothing to me. ~=> Give something to me (Don't + nothing is double negation)
I'm not Not giving nothing to you. ~=> I'm not giving anything (not + not + nothing is tripple negation)
底线,假设n
是!
值/var/表达式之前的符号数,我们将其称为e
:
if n%2 === 0
(n(!)) e === (boolean)e
if n%2 === 1
(n(!)) e === !e
如果操作数前面的否定运算符的数量是偶数,则表达式将被计算为其值,并转换为布尔值。如果否定运算符的数量是奇数,则表达式将被计算为其相反的布尔值。
只需将 all!
替换为.
于 2013-08-12T08:15:55.553 回答
2
这echo
实际上让你失败了,在做一些研究时永远不要使用这个运算符。
但是养成使用的习惯var_dump()
:
var_dump(!0);
你将永远知道真正的价值:
bool(true)
于 2013-08-12T08:29:01.533 回答
1
由于!
是逻辑 NOT 运算符并且 0 被解释为false
,因此您会得到:
!0 -> true
!!0 -> !(!0) -> !(true) -> false
!!!0 -> !(!(!0)) -> !(!(true)) -> !(false) -> true
当你echo true;
,PHP 输出一个1
.
于 2013-08-12T08:18:03.920 回答
1
!0
等于true;
当你回显真实时,你会得到1
零本身被认为是错误的:
if (0) // false
echo "you won't see this."
if (!0) // if not 0 means true
echo "you see this."
于 2013-08-12T08:16:03.837 回答
0
!
是逻辑非运算符。将布尔值更改为相反的值 0 <=> 1
0 = 0
!0 = 1
!!0 = 0 (第二个!更改为 1,第一个将 1 更改为 0)
!!!0 = 1
于 2013-08-12T08:17:28.573 回答