修复与隐藏PHP中的“未定义变量”错误

时间:2012-03-16 18:56:38

标签: php

根据我设置的错误报告,我的网络应用程序可以正常运行或显示大量错误。我的印象是我不需要在PHP中启动变量,但设置第二个错误报告似乎需要它。这是怎么回事?我应该通过并启动所有变量吗?

error_reporting(E_ALL ^ E_NOTICE);

error_reporting(E_ALL | E_STRICT);

4 个答案:

答案 0 :(得分:1)

PHP试图通过发出警告来帮助您 - 注意它们是一个非常好的主意。

您的代码可能有效,但PHP表示您没有考虑某些事情 - 比如初始化变量。

就个人而言,我尽可能多地发出警告。我们都会偶尔出错或遗忘。解释器可以帮助您确保它告诉您这些事情。充分利用它。

答案 1 :(得分:1)

您询问是否取消未初始化变量的警告,但您发布的代码会抑制所有 E_NOTICE警告。这不是完全相同的事情,但它可以直接达到你所要求的;没有办法只抑制未初始化的变量通知。

在某种程度上,通知可能是所有人最重要的警告/错误消息,因为它们指出了潜在的logic errors,这是最难识别和修复的。{/ p>

鉴于您的选择:

  1. 取消所有 E_NOTICE警告。
  2. 修复代码中所有未初始化的变量。
  3. 我建议选择#2。这是更多的前期工作,但是一个适时的E_NOTICE可能会在一天中为您节省大量的麻烦。

答案 2 :(得分:0)

如果您在初始化之前引用标识符,则会收到notice错误。

例如:

echo $variable; // is referencing to $variable which is not set before
echo $arrayname['indexname'] // it is also referencing to indexname item of array,
// if not found it will index another notice error

因此,请确保在我们的代码中引用标识符/变量之前声明它,您将是安全的。

答案 3 :(得分:0)

您遇到的是警告和错误之间的区别。警告意味着“这可能不会产生您建议的输出”,错误意味着“这不能正常工作”。如果您的应用程序正常工作,您可以毫无问题地禁止警告。但是如果你出现奇怪的行为,打开E_STRICT警告可能会导致你的代码中的错误。

例如,如果您尝试遍历数组,但它从不产生任何结果,则启用E_STRICT警告可能会提醒您在尝试循环之前未对数组进行初始化。

一般来说,您将在生产环境中关闭E_STRICT警告。在使用它们之前确保变量已初始化通常是一种很好的做法。