【发布时间】:2014-06-24 07:35:45
【问题描述】:
在 PHP 中,我将 error_reporting 设置为报告包括通知在内的所有内容。
为什么以下内容不会引发任何通知、错误或其他任何内容?
$myarray = null;
$myvalue = $myarray['banana'];
故障排除步骤:
$myarray = array();
$myvalue = $myarray['banana'];
// throws a notice, as expected ✔
$myarray = (array)null;
$myvalue = $myarray['banana'];
// throws a notice, as expected ✔
$myarray = null;
$myvalue = $myarray['banana'];
// no notice or warning thrown, $myvalue is now NULL. ✘ Why?
这可能是 PHP 中的一个错误,或者我只是不了解它的工作原理。
【问题讨论】:
-
就数据类型而言,PHP 并不是真正最合乎逻辑的语言:me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design
-
我同意@Blender 的观点:它通常会做最有意义的事情,尽其所能。这通常非常方便,不会因为小错误而打扰任何人。
-
哇 - 我已经使用 PHP 多年了,不知何故直到今天才被这种疯狂所困扰。快速测试表明,这种疯狂的设计决定在 PHP 7 中保持不变。:(
-
您甚至可以这样做:
<?php null['banana'];,这不是错误。我想这与使用包含空值的变量相同,但它看起来非常奇怪。和 Mark 一样,我在使用 PHP 几年后才遇到这种情况,我很惊讶。