我遇到了一个问题,在运行alertError()时,它看起来很好并且存在$ errors的访问权限,但是在运行showErrors()时,它告诉我变量是未定义的。 “未定义的变量:”
中的错误$errors = array();
function alertError($error){
$errors[] = $error;
echo $errors[count($errors)-1];
}
function showErrors(){
echo "<html>
<head>
<title>Error occurred!</title>
</head>
<body>";
foreach($errors as $error){
echo $error."<br>";
}
echo "
</body>
</html>";
die();
}
为什么alertError()似乎知道定义了$ errors,并且showErrors()无法访问他?
答案 0 :(得分:4)
将错误传递给showErrors()
function showErrors($errors){
...
}
您可能需要这样的代码
$errors = alertError($error);
showErrors($errors);
function alertError($error){
$errors[] = $error;
echo $errors[count($errors)-1];
return $errors;
}
function showErrors($errors){
echo "<html>
<head>
<title>Error occurred!</title>
</head>
<body>";
foreach($errors as $error){
echo $error."<br>";
}
echo "
</body>
</html>";
die();
}
答案 1 :(得分:2)
当函数'alertError()'运行时,它对全局变量$ errors一无所知。它每次都会创建新的变量$ errors。 所以它可以正常工作但不是你想要的。在showErrors中,此变量未声明,因此您会收到通知。 您可以在每个函数中使用语句全局$ errors ,但这是一种不好的做法。
答案 2 :(得分:1)
在showErrors()
的第一行添加此行global $errors;
这将使您可以访问在函数
上面声明的全局$错误<强>更新强>
正如提到的那样,在评论中买了Alien先生和Neil Neyman先生 - 这是一个床上练习...... 如果您要为更复杂的系统编写一些php,您应该了解其链接和注释中显示的OOP概念。
祝你好运!