我的验证功能看起来像那样
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()
我该如何解决这个问题?
缺少参数3($ type)的validate()
始终列出可选参数作为最后一个参数。由于PHP没有命名参数也没有“重载ala Java”,这是唯一的方法:
function validate($data, $type, $data2 = 0) {
}
您至少应该在此行中设置$ type:
function validate($data, $data2 = 0, $type)
在NULL
或''
,你可以在这里看到:
function validate($data, $data2 = 0, $type = null)
PHP允许您为参数设置一个值,但是您无法定义一个参数,而没有预设值AFTER参数(具有预设值)。因此,如果您需要始终指定第三个参数,则必须像这样切换第二个和第三个参数:
function validate($data, $type, $data2 = 0)
来自http://php.net/manual/en/functions.arguments.php
请注意,使用默认参数时,任何默认值都应位于任何非默认参数的右侧;否则,事情将无法按预期工作
你应该切换函数的第二个和第三个参数,使可选参数成为最后一个。所以它变成:
function validate($data, $type, $data2 = 0)
{ ....
function validate($data, $data2, $data3, $data4, $data5)
我是一个初学者,但我认为你可以使用一千个参数,只要你这样打电话
if ($result = validate($lname, 'name','','','') !== true)
请注意,从PHP 7.1开始,这将抛出PHP致命错误,而不仅仅是警告:
PHP Fatal error: Uncaught ArgumentCountError: Too few arguments to function validate(), 2 passed in /path/to/file.php on line X and exactly 3 expected