我从不知道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
的“魔术”转换是否应该保留给显式转换?
究竟发生了什么(如果我的猜测是错误的)?