如何使变量未定义消息消失? PHP

时间:2010-08-16 19:22:07

标签: php

我在循环中的PHP代码中有一个变量,而循环运行时有时变得未定义。我有一个if语句,检查是否定义了变量,因此未定义的变量不是问题,但是,有一个问题是连续的这个变量是由服务器生成的未定义的消息出现在我的网页上。有没有办法摆脱这些恼人的消息?谢谢!

5 个答案:

答案 0 :(得分:4)

定义变量。

其他人可能会告诉您更改error_reporting级别,但如果您的脚本丢失了Notices,则需要修复错误,而不是将其隐藏起来。

真。试图访问尚未定义的变量是一种可怕的做法,只会导致更多(更糟)的错误。解决原因,而不是症状。

答案 1 :(得分:0)

将此代码放在页面顶部以关闭error reporting

error_reporting(0);

如果您只想隐藏通知,请使用:

error_reporting(E_ALL ^ E_NOTICE);

但修复错误将是更明智的事情。

答案 2 :(得分:0)

将此行放在脚本之上:

error_reporting(E_ALL ^ E_NOTICE);

虽然建议在开发时心情不要禁用它。

更多信息:

答案 3 :(得分:0)

这是我使用的功能。可以更改以返回所有类型的内容并提供proper credit where credit is due

/**
 * Defines an on the fly alternative to echo content when variable is not available
 * 
 * https://stackoverflow.com/questions/376623/php-printing-undefined-variables-without-warning
 * 
 * @param object $variable
 * @param object $default [optional]
 * @return 
 */
function ifsetor(&$variable, $default = false, $pre = false, $pos = false) {

    // if variable is a boolean auto returns the boolean
    if(is_bool($variable)) return $variable;

    // if variable is string checks if we're adding somehing before or not
    if(isset($variable)) 
        $tmp = $pre.$variable.$pos;
    else 
        $tmp = $default;

    return $tmp;
}

答案 4 :(得分:0)

定义变量并不意味着

define ('SOME_VAR', "with a value")
//or you can add ,true to the end
define ('SOME_VAR2', "with a value",true)//true means case sensitive

以上将设置一个无法更改的值,因此它实际上不是变量。 消除服务器错误有很多种方法,因为变量根本没有分配可见或有效值。 Null是有效值以及""。

我建议尝试将值设置为null,然后对非null进行测试。在运行之前使用isset(){}作为没有if条件的测试,并且/或者你运行你的安装测试/循环。

       if (!isset($someVar))
        {
        $someVar = NULL;//or use a "valuestring"
        }

所有条件测试,更具体地说isset()语句返回true或false,这意味着如果有值,测试返回true。 null通常会解决您的问题。