我的验证功能看起来像
function validate($data, $data2 = 0, $type)
{
...
函数调用示例
if ($result = validate($lname, 'name') !== true)
response(0, $result, 'lname');
如您所见,我的验证功能有3个输入变量。我经常不使用第二个var - $ data2,这就是默认情况下将其设置为0的原因。但是,当我将此函数作为给定示例调用时(据我所知,这意味着$ data = $ lname,$ data2 = 0,$ type =' name')收到错误消息
Missing argument 3 ($type) for validate()
我该如何解决?
答案 0 :(得分:21)
缺少参数3($ type)以验证validate()
始终列出可选参数作为最后一个参数。由于PHP没有命名参数,也没有“重载Java”,这是唯一的方法:
function validate($data, $type, $data2 = 0) {
}
答案 1 :(得分:6)
您至少应该在此行中设置$ type:
function validate($data, $data2 = 0, $type)
在NULL
或''
,您可以在此处看到:
function validate($data, $data2 = 0, $type = null)
PHP允许您为参数设置值,但是您无法定义参数没有预设值 AFTER 参数 HAVE 预设值。因此,如果您需要始终指定第三个参数,则必须像这样切换第二个和第三个参数:
function validate($data, $type, $data2 = 0)
答案 2 :(得分:0)
来自http://php.net/manual/en/functions.arguments.php
请注意,使用默认参数时,任何默认值都应位于任何非默认参数的右侧;否则,事情将无法按预期工作
你应该切换函数的第二个和第三个参数,使可选参数成为最后一个参数。所以它变成了:
function validate($data, $type, $data2 = 0)
{ ....
答案 3 :(得分:0)
function validate($data, $data2, $data3, $data4, $data5)
我是初学者,但我认为你可以使用一千个参数 只要你这样打电话
if ($result = validate($lname, 'name','','','') !== true)