可能是自己以前寫程序太規范了,今天發現個PHP函數參數個數的問題,定義的函數有三個參數,但是使用函數的時候竟然傳了四個參數,更意外的是程序運行沒有錯誤,甚至沒有警告。於是依靠搜索引擎和PHP文檔仔細查看了下。PHP內置了幾個關於函數參數的函數。
func_get_arg(int $arg_num)//獲取傳遞的第 $arg_num 個參數,從0開始索引。
func_get_args()//獲取傳遞參數的列表,以二維數組返回。
func_num_args()//返回傳遞給參數的個數
因為有了上面三個函數,即時定義函數的時候沒有定義參數列表。實際調用函數的時候也不會出錯,可以通過上面的三個函數接收參數。
function myfun($name, $value='') { $args = func_get_args(); var_dump($args); var_dump(func_get_arg(0)); echo 'Number of arguments is:', func_num_args(), '<br />'; echo 'I am function<br />'; } myfun(12, 22, 36); 輸出結果為: E:\website\www\info.php:13: array (size=3) 0 => int 12 1 => int 11 2 => int 323 E:\website\www\info.php:14:int 12 Number of arguments is:3 I am function
盡管如此,還是推薦按更標准的格式定義函數,讓使用函數的用戶明白各個參數的含義,傳遞參數的數據類型。