PHP函数参数默认值

时间:2011-01-28 05:03:21

标签: php function

嘿所有人。 我有一个 processForm 函数和一个 displayForm 函数。如果缺少表单字段, processForm 函数将返回缺少字段的数组。在我尝试将此数组包含在 displayForm 函数中之前,这一切都很好。 问题在于:

如果我不这样做:

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;

这些是我遇到问题的代码部分。

再次感谢。

2 个答案:

答案 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'])