可能是自己以前写程序太规范了,今天发现个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:websitewwwinfo.php:13: array (size=3) 0 => int 12 1 => int 11 2 => int 323 E:websitewwwinfo.php:14:int 12 Number of arguments is:3 I am function
尽管如此,还是推荐按更标准的格式定义函数,让使用函数的用户明白各个参数的含义,传递参数的数据类型。