PHP函数缺少参数错误

时间:2011-11-09 12:25:27

标签: php validation function

我的验证功能看起来像

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() 

我该如何解决?

4 个答案:

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