<?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会释放一个通知给用户, 同时输出一个参数的类型. **/ ?>