如果我不这样做:
displayForm($missingFields=array());
然后我的 validateField 函数抛出一个警告,表明它希望参数是一个数组。 但是,会覆盖 processForm 函数返回的数组。
我希望我很清楚。谢谢你的帮助。
完整代码:
if(isset($_POST['action']) && $_POST['action'] = "login")
{
$messages = processForm();
}
processForm()
if($errorMessages)
{
return array("errors" => $errorMessages, "missing" => $missingFields);
}
else
{
$_SESSION['user'] = $user;
header("Location: index.php");
}
form.php的
(!isLoggedIn())? displayForm($messages['errors']=array(),$messages['missing']=array()) : null;
这些是我遇到问题的代码部分。
再次感谢。
答案 0 :(得分:3)
您不在通话中设置默认参数值,您可以在签名中设置它们,例如
function displayForm($arg1 = array()) {
...
}
写作时
displayForm($消息[ '错误'] =阵列())
这实际上是在做这样的事情
$messages['error'] = array(); // set $messages['error'] to an empty array
displayForm($messages['error']); // pass an empty array to displayForm
这是因为在PHP中,赋值的返回值是赋值。
答案 1 :(得分:0)
你为什么要用这个:
displayForm($messages['errors']=array(),$messages['missing']=array())
当你写“$ messages ['errors'] = array()”时,这是将 $ messeges 设置为空白数组。所以参数是空白的。你可以写:
displayForm($messages['errors'],$messages['missing'])