该函数array_shift()
通过引用获取一个参数.传递数组文字会导致致命错误:
$ php -r'var_export(array_shift(array("Test#0"));'; echo
致命错误:在第1行的命令行代码中,只能通过引用传递变量
这按预期失败.但是,当使用call_user_func_array调用函数时,PHP表现得很奇怪:
执行时:
$ php test.php
'测试#1'
警告:参数1到array_shift()应该是一个引用,在第6行的/Users/kcc/test.php中给出的值NULL
警告:参数1到array_shift()应该是一个引用,在第10行的/Users/kcc/test.php中给出的值NULL
可以理解的是
call_user_func_array()
,不会触发致命错误,但为什么第一种形式可以正常工作呢?