php函数中未定义的索引

时间:2014-05-02 06:56:08

标签: php arrays string forms function

以下函数每次成功提交表单后都会生成一条成功消息:

function CreateNotice($notice,$type='notification')
{
    $_SESSION['Message'][] =  array($type,$notice);  
}
function DisplayNotice()
{
    $str = '';
    if(count($_SESSION['Message']) > 0) ------>------>----->Line 85
    {
        for($i=0;$i<count($_SESSION['Message']);$i++)
        {
          $str.="<div class='".$_SESSION['Message'][$i][0]."Message left'>".$_SESSION['Message'][$i][1]."</div>";
        }
        unset($_SESSION['Message']);
        return $str;
    }   
}

只要在浏览器中打开页面,它就会产生以下通知。

Notice: Undefined index: Message in /home/user/public_html/dir/subdir/test.php on line 85

有什么想法吗?

4 个答案:

答案 0 :(得分:2)

错误很简单:您正在从未定义的数组中访问某些内容。

例如,

$a = array(0, 1, 2, 3);
$b = $a[4]; // 4 does not exist. (0, 1, 2, 3 do)

要解决此错误,请使用isset验证是否设置了if。

例如,像这样。

$a = array(0, 1, 2, 3);
if (isset($a[4])) { $b = $a[4]; } // 4 doesn't exists, 
   // so we move over to the else condition 
   // (which is optional, but otherwise we get the issue that B is not defined). 
   // Once again, 0, 1, 2, 3 do exist of this array
else $b = false;

除此之外,我建议您查看用于循环数组的foreach语法,但这与您的问题无关。

此外,由于此错误已触发,可能表示您在调用CreateNotice之前未调用您的函数DisplayNotice

答案 1 :(得分:1)

在脚本之上添加此行(如果它不存在)

session_start(); // Starts the session so you can make use of $_SESSION

并在DisplayNotice()中添加这些行。

if(isset($_SESSION['Message']))    // check this condition only is session is set
{
    if(count($_SESSION['Message']) > 0) 
    {
    ......................
    }
}

答案 2 :(得分:1)

在函数DisplayNotice(){...}

中的if条件中使用**isset**
if(count(isset($_SESSION['Message'])) > 0)

答案 3 :(得分:0)

在页面顶部使用此代码

的error_reporting(0);