帮助未定义的索引和未定义的变量

时间:2011-05-17 07:11:29

标签: php

有人可以帮我解决这个问题。我只是将我的PHP / MYSQL程序转移到另一台计算机(都运行XAMPP和localhost),现在我得到了大量未定义的索引和未定义的变量错误。有人可以解释一下原因吗?

使用isset检查所有变量,并且所有值都应该正常,但是我无法按照预期的那样获得任何工作,然后是未定义的索引和未定义的变量ERRORS。

请帮忙! 感谢

4 个答案:

答案 0 :(得分:7)

看看这里: error-reporting

你可以尝试类似的东西(运行时):

<?php
  error_reporting(E_ALL ^ E_NOTICE);
?>

或者更新php.ini:

error_reporting = E_ALL & ~E_NOTICE

答案 1 :(得分:3)

听起来第一个方框上的配置的错误报告级别较低。

您可以通过ini_set在php.ini或代码中设置它。

的php.ini

error_reporting = E_ALL & ~E_NOTICE

php code

error_reporting(E_ALL ^ E_NOTICE);

答案 2 :(得分:2)

其他答案可帮助您修复症状,而不是问题。您没有收到错误,只是通知,这是一个特殊的错误级别,警告您可能出现问题,但不会停止执行。

鉴于php不需要声明变量的性质,很容易在代码中出现拼写错误并花费你的跟踪它(我确信每个人都至少做过几次)。还有E_NOTICE来救援:当你试图使用一个事先没有设置的变量时它会发出警告 - 帮助你发现拼写错误。

避免它非常简单,假设您正在检查帖子数组中是否存在提交按钮以进行表单处理:

if ($_POST["submit"] == "submit")

如果是常规获取请求,该行将抛出一个E_NOTICE,因为“submit”是$ _POST中的无效索引。避免这种情况非常简单:

if (isset($_POST["submit"]) && $_POST["submit"] == "submit")

首先检查数组索引是否存在。 PHP使用惰性求值,在这种情况下,它意味着在isset()之后停止,如果它返回false - 将抛出通知的检查将不会被执行。另外:isset不是一个函数,而是一个语言结构 - 因此速度很快。

我个人的偏好是在所有开发者计算机上将error_reporting设置为E_ALL | E_STRICT,这样我就会收到每个可能出现的问题的通知 - 包括使用已弃用的语言功能。

答案 3 :(得分:1)

可能PHP配置文件(php.ini)中的error_reporting设置与旧的XAMPP配置不同。