PHP数组需要在使用前声明吗?

9

最近我在写一个应用程序时,不小心在声明数组之前就开始填充它了。

error_reporting ( E_ALL);  
$array['value'] = 'Test string';

我使用了E_ALL错误报告,但没有抛出任何错误。这样做是否正确?如果是的话,那么在声明数组值时从未声明实际数组是否存在问题呢? 也许这只是不遵循良好的编程标准。


当你说“not thrown”时,你是指它没有显示在屏幕上还是没有被记录(如果你的日志级别设置正确)。如果它被记录了但没有显示,请检查你的php.ini中的display_errors设置(应该设置为1)- 这是一个很好的参考:http://php.net/manual/en/errorfunc.configuration.php。 - jlindenbaum
3个回答

7

在编写最近的应用程序时,我不小心在声明数组之前就开始填充它了。

PHP是一种弱类型语言。你的语句:

$array['value'] = 'Test string';

这是通过赋值隐式声明关联数组。因此,不会生成通知。

但是,如果你写下:

echo $array['value'];

如果在分配变量之前使用变量,你会收到一个未定义的变量通知。


5
不,你不必这样做。但是,声明数组可以增加代码的可读性,这是一个好习惯。

4

进一步解释,你并不“必须”这样做,但这样做会有好处。

如果你关闭了E_NOTICES,那么你将看不到未初始化变量的错误。在生产环境中,你应该关闭它,但在开发过程中,你应该打开它。这将允许你发现可能看不到的问题。


1
我同意。在使用前声明数组是一个好的实践。 - Mitch C
3
另外,在生产环境中没有关闭它的理由。我的意思是,如果你的代码很干净,就不会报告任何问题。 - Camilo Martin
在生产环境中,您应该关闭它。为什么?当然,“开发测试应该在生产之前解决错误”,但是如果他们没有解决呢?尽管这种情况可能不太可能发生,但如果在生产环境中出现问题,您希望能够看到它们。如果您有错误报告来显示这些问题,即使在生产环境中也是如此,而且存在错误,那么您就可以捕获它们,如果没有错误,则也没有日志。因此,在生产环境中没有关闭它的理由。 - James

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接