如果文档是正确的,这将产生严格的标准信息:
PHP Strict standards: Only variables should be passed by reference
所以我认为你刚刚在文档中发现了一个错误.恭喜.
编辑
如果您将它与EXTR_REFS一起用作第二个参数,它仍然不会抱怨:
~❯ php -a
Interactive shell
php > function a(){return array('pwet'=> 42);}
php > extract(a(), EXTR_REFS);
php > echo $pwet;
42
这很奇怪,因为在函数内定义的引用变量对我来说没有多大意义.我认为&可能是因为此选项而引入的,但仅出现在文档中,并且未在代码中强制执行.
编辑
看来我是对的,我在ext / standard / array.c(分支5.3和5.4)中找到了这个注释:
/* var_array is passed by ref for the needs of EXTR_REFS (needs to
* work on the original array to create refs to its members)
* simulate pass_by_value if EXTR_REFS is not used */