以下函数每次成功提交表单后都会生成一条成功消息:
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
有什么想法吗?
答案 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);