为什么在算术运算中将NULL解释为零?

时间:2019-03-27 12:19:05

标签: php null-pointer

我从不知道PHP(至少是版本5.6.25)在执行简单的算术运算时会将NULL视为0

最近,在寻找错误原因时,我遇到了这个问题。一个简单的测试(确实)证实了这一点:

$a = null;

echo $a + 1;    // 1

echo $a - 1;    // -1

echo $a * 1;    // 0

echo $a / 1;    // 0

echo 1 / $a;    // INF (**E_WARNING : type 2 -- Division by zero**)

根据我对C的“有限”知识,NULL(void *)0。现在,我的猜测是PHP“魔术”类型转换是否以某种方式将void *转换为int * ?!

PHP为什么要这样做? 这样null的“魔术”转换是否应该保留给显式转换? 究竟发生了什么(如果我的猜测是错误的)?

0 个答案:

没有答案