2011-11-09 156 views
6

我的验证功能看起来像PHP函数缺少的参数错误

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

函数调用例如

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

正如你看到的,我验证功能3输入瓦尔。我没有经常使用第二个var - $ data2,这就是为什么默认设置为0的原因。但是,当我打电话这个功能给定的例子(据我所知这意味着$数据= $ L-NAME,$数据2 = 0,$类型=“名称”)收到错误消息

Missing argument 3 ($type) for validate() 

我怎样才能修复?

+0

调用像'validate($ lname,0,'name')' – Rikesh

回答

19

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

始终将可选参数列为最后一个参数。由于PHP不命名参数,也不是“超载ALA的Java”,这是唯一的方法:

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

你至少应该设置在此行中$类型:

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

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

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

PHP让您能够为参数设置的值,但不能定义参数预设值AFTER参数一个pr设定值。所以,如果你需要始终指定第三PARAM,你必须选择第二个和第三个是这样的:

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

感谢你。 – rapidoodle

0

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

注意当使用默认参数时,任何默认参数必须放在右侧任何非默认参数;否则,事情将无法按预期工作

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

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