2011-11-09 141 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) 
{ ....