我有这个代码:
$a = 1;
$a = !$a - $a;
echo $a;
Run Code Online (Sandbox Code Playgroud)
我在想!0- 开玩笑,但输出是-1.不幸的是我无法理解结果的原因-1.如果有人解释,这将是伟大的.
Mah*_*hdi 10
如果你这样做,var_dump(!$a);你会发现它!$a不再是一个整数.它是一个boolean false,它不是因为它的原始价值1在你的情况下.看看这个:
$a = 5;
$a = !$a - $a;
echo $a; // output: -5
Run Code Online (Sandbox Code Playgroud)
你也可能也有兴趣做以下事情:
$a = 5;
$a = false - $a;
echo $a; // output: -5
Run Code Online (Sandbox Code Playgroud)
所以,正如你所看到的,!$a手段false和它翻译成0.所以,根据你的例子,我们有这样的事情:
$a = 1;
$a = !$a - $a;
Run Code Online (Sandbox Code Playgroud)
这相当于:
$a = 0 - 1;
Run Code Online (Sandbox Code Playgroud)
这是-1.
更进一步,true也转化为1.你想确定吗?试试看:
$a = 5;
$a = true - $a;
echo $a; // output: -4
Run Code Online (Sandbox Code Playgroud)
我想现在应该清楚了!如果它仍然令人困惑,请告诉我.