php call_user_func_array 与 函数参数的默认值

<?PHP


function test($v=2)
{
	echo $v."\r\n";
}


// 第已种调用方式
test([]);
//output

---------- php ----------
Notice: Array to string conversion in D:\phpStudy\WWW\demo\test.php
Array
PHP Notice:  Array to string conversion in D:\phpStudy\WWW\demo\test.php 

Output completed (2 sec consumed) - Normal Termination





//第二种掉调用方式.
call_user_func_array('test',[]);
// output
---------- php ----------
2


//测试结论

/**
	知识点处理 :
	1  在调用call_user_func_array的时候, 传递的全部的参数,都是以数组的方式进行传递的, 这个地方容易出现错误的理解, 该函数要求传递的是一个数组, 但, 在真实调用 test 函数的时候, 是将该array() 中的值依次传递给 test() 函数的, 
    因此,在第二种调用方式下, 实际是没有传递任何参数的, 所以 test函数的调用过程当中使用了参数的默认值.

	2  在处理定义了默认值的函数的时候,对参数的处理问题, 若是参数是定义了默认值, 此时若是传递一个空数组,那么程序该如何处理, 这种状况就是 第一种调用方式的输出结果, php会释放一个通知给用户, 同时输出一个参数的类型.

**/

?>
相关文章
相关标签/搜索