最新在做一个PHP项目米扑代理: http://proxy.mimvp.com

在线上服务器运行正常,被同事拿到本机测试的时候总是出现“Notice: Undefined index:”这样的警告,这只是一个因为PHP版本不同而产生的警告(NOTICE或者WARNING),而非错误(ERROR)。

PHP Notice:  Undefined index: 3_desc in /home/homer/workspace/proxy_client/usercenter/orderdetail.php on line 352

PHP中的变量在不声明的情况下使用的时候,PHP4运行正常,但是到了PHP5环境下就会出现上述的警告或者提示。

经过搜索查询,总结以下几种解决Notice: Undefined index的方法。

 

1. 修改 php.ini 文件中 已验证,OK

这样当程序中存在NOTICE或WARNING的不足之处时,提示都将会被忽略。

当然这对于新手来说并不合适,不仅不方便调试程序,而且不利于养成好的代码习惯。

sudo vim /usr/local/php5/lib/php.ini

error_reporting = E_ALL

error_reporting = E_ALL & ~E_NOTICE

 

2. 使用代码,在每个文件头添加一行 error_reporting(0);   已验证,OK

error_reporting(0);

 

3. 初始化变量

对变量进行初始化,规范书写;

$mimvp = "http://mimvp.com"

但是如果有大量的变量,则会比较烦琐。

 

4. 使用@抑制错误 已验证,OK

''@''的作用是表示这行如果有错误或是警告,不要输出提示

@$name = $_GET['name'];

 

5. 初始化 + 赋值前判断已验证,OK

$name = "";
if( !empty($_GET['name']) ) {
      $name = $_GET['name'];
}

// 或者

$name = "";
if( isset($_GET['name']) ) {
      $name = $_GET['name'];
}

 

以上解决方案中,推荐第4和第5两种搭配使用

第1种全局配置,将会屏蔽所有的提示,不利于新手和发现潜在的错误。