PHP函数缺少参数错误

问题描述 投票:7回答:5

我的验证功能看起来像那样

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

我该如何解决这个问题?

php validation function
5个回答
21
投票

缺少参数3($ type)的validate()

始终列出可选参数作为最后一个参数。由于PHP没有命名参数也没有“重载ala Java”,这是唯一的方法:

function validate($data, $type, $data2 = 0) {
}

6
投票

您至少应该在此行中设置$ type:

function validate($data, $data2 = 0, $type)

NULL'',你可以在这里看到:

function validate($data, $data2 = 0, $type = null)

PHP允许您为参数设置一个值,但是您无法定义一个参数,而没有预设值AFTER参数(具有预设值)。因此,如果您需要始终指定第三个参数,则必须像这样切换第二个和第三个参数:

function validate($data, $type, $data2 = 0)

0
投票

来自http://php.net/manual/en/functions.arguments.php

请注意,使用默认参数时,任何默认值都应位于任何非默认参数的右侧;否则,事情将无法按预期工作

你应该切换函数的第二个和第三个参数,使可选参数成为最后一个。所以它变成:

function validate($data, $type, $data2 = 0)
{ ....

0
投票
function validate($data, $data2, $data3, $data4, $data5)

我是一个初学者,但我认为你可以使用一千个参数,只要你这样打电话

if ($result = validate($lname, 'name','','','') !== true)

0
投票

请注意,从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

更多信息:http://php.net/manual/en/migration71.incompatible.php

© www.soinside.com 2019 - 2024. All rights reserved.