Php 如何抑制未定义的索引错误?

Php 如何抑制未定义的索引错误?,php,error-handling,Php,Error Handling,在您建议使用isset或empty或数组\u键\u存在之前,我知道 我继承了一个有将近一百万行代码的老项目。我想启用E_NOTICE,但我收到大量消息。作为一个临时解决方案,我通过以下方式抑制了“未定义索引”错误: function _global_error_handler($level, $message, $filename, $line_no, $context) { if($level===E_NOTICE && substr($message,0,16)===

在您建议使用
isset
empty
数组\u键\u存在之前,我知道

我继承了一个有将近一百万行代码的老项目。我想启用
E_NOTICE
,但我收到大量消息。作为一个临时解决方案,我通过以下方式抑制了“未定义索引”错误:

function _global_error_handler($level, $message, $filename, $line_no, $context) {
    if($level===E_NOTICE && substr($message,0,16)==='Undefined index:') return false; 

但我希望有办法通过INI设置或其他方式完全禁用通知。我不希望每次发生这种情况时都需要调用全局错误处理程序来增加开销。

不,没有比
E.*
常量更具体的方法了,除非像您当前所做的那样手动解析错误条件


我现在的建议是禁用
E_NOTICE
errors。当您有机会(应该尽可能快地)时,再次启用它们并尽可能多地进行修复。

因此,基本上您希望看到E_NOTICE消息,但“未定义索引”除外?你要把这关回去生产,对吗?那么,谁会关心开发过程中的这个微小的“开销”呢?我认为您当前的解决方案是解决这个问题的唯一方法,所以我会保持这样,并将您通过这样做节省的时间花在实际解决问题上。毕竟,这个通知表明了一个可能的错误,可能是多米诺骨牌效应。尝试修复出现的第一个错误,看看它是否修复了后续的错误。@Dagon我不确定您是否理解一百万行PHP是什么样子,或者客户不关心您产生了多少错误,只要他们的产品能够正常工作并按时交付。我在这里已经尽力了;)