Php 如何在寄存器\全局变量打开的情况下消除未定义的变量?

Php 如何在寄存器\全局变量打开的情况下消除未定义的变量?,php,Php,我的网站已打开register_globals。当register_globals打开时,变量声明可以位于站点中的任何位置。我试图清理php-error.log文件中的通知,但我不确定什么是最好的方法 这是一份通知样本 PHP Notice: Undefined variable: arc_dttm in E:\pm\www\main\ts_data.php arc_dttm在另一个php文件中定义。由于register_globals,该值在我的ts_data.php文件中可用 下面是ts

我的网站已打开register_globals。当register_globals打开时,变量声明可以位于站点中的任何位置。我试图清理php-error.log文件中的通知,但我不确定什么是最好的方法

这是一份通知样本

PHP Notice:  Undefined variable: arc_dttm in E:\pm\www\main\ts_data.php
arc_dttm在另一个php文件中定义。由于register_globals,该值在我的ts_data.php文件中可用

下面是ts_data.php文件中的代码行

if($j==3||$j==5||$j==6||$j==7||$arc_dttm||$tabPerm=='R')
  $readonly = 1;
我是否应该简单地将isset()添加到引起未定义变量通知的每一段代码中?例如

if($j==3||$j==5||$j==6||$j==7|| (isset($arc_dttm) && $arc_dttm ) ||$tabPerm=='R')
  $readonly = 1;

谢谢你的建议。

不,你的错误报告设置在开发阶段,所以不要担心。当您设置为“高效”时,一切正常。

为什么不将其关闭?您不应该依赖它,它是5.4中一个不推荐使用的“功能”…@onetrickpony它在PHP5.4中被完全删除,而不仅仅是不推荐使用。弃用从5.3开始。出于许多原因,
isset()
是最好的方法,但您也可以将错误报告设置得更低一些:这是一个非常旧的站点,如果我关闭register\u globals,它将失败得很惨。我想在我的php.ini中删除通知scrowler。在我的情况下,最好的方法不是首先消除通知吗?他问如何修复通知,而不是隐藏它们。这并不能帮助他解决开发问题。您可以设置错误报告,但不会出现另一个错误。因此,在编写代码后,您可以从调试模式中清除错误。