回答
call_user_func
可以通过值与调用函数的参数仅传递参数,而不是参考。如果你想通过引用传递,你需要直接调用函数,或者使用call_user_func_array
,它接受引用(但是这可能无法在PHP 5.3及更高版本中使用,具体取决于手册的哪一部分)。
注意,对于call_user_func()的参数不被引用传递。
所以,你有答案。然而,在它周围有一个方式,通过manual
call_user_func_array('test', array(&$b));
再次阅读应该可以通过引用传递它。
但是,根据手册,该解决方法只能在PHP 5.3之前运行。 – 2010-09-03 15:31:13
是的,这是真的,所以它可能是最好的避免使用该方法,因为它不会向前兼容。 – 2010-09-03 15:35:16
>注意这对于PHP> 5.3.0不起作用,所以请谨慎使用它。 但是我只是尝试了PHP 5.3.3,它没有任何警告/通知。 其似乎call_user_func_array隐藏错误。 – noxvile 2010-09-03 15:39:04
我刚刚有同样的问题,改变(对我来说):
$result = call_user_func($this->_eventHandler[$handlerName][$i], $this, $event);
到
$result = call_user_func($this->_eventHandler[$handlerName][$i], &$this, &$event);
似乎工作在PHP 5.3就好了。
它甚至不是一种解决方法,我认为,它只是做的是告诉:-)
不赞成使用的方法。 – 2018-03-08 09:52:31
您需要设置变量等于函数的结果,像这样......
$b = call_user_func('test', $b);
和功能应该写入如下...
function test($a) {
...
return $a
}
其他通过引用传递工作一回合已被弃用。
- 1. 为什么会出现编译错误,“预计”为我的Java代码?
- 2. 为什么会给出错误?
- 3. 为什么mcrypt_encrypt会给出错误?
- 4. 为什么cygWin grep会给出错误?
- 5. 当我参考两个类时,出现StackOverflow错误。为什么?
- 6. 为什么会出现分段错误?
- 7. 为什么会出现语法错误?
- 8. 为什么会出现段错误11
- 9. 为什么会出现错误?
- 10. 为什么会出现名称错误?
- 11. 为什么会出现MySQL错误1064
- 12. 为什么会出现错误?
- 13. 为什么会出现分析错误?
- 14. 为什么会出现分段错误?
- 15. 为什么会出现这个错误?
- 16. 为什么会出现以下错误?
- 17. 为什么Gradle会出现此错误?
- 18. 为什么会出现分段错误?
- 19. GL_LINEAR_MIPMAP_LINEAR为什么会出现INVALID_ENUM错误?
- 20. 为什么会出现此参考错误? (Cordova插件,Facebook,Javascript,HTML)
- 21. 为什么pyspark会给出错误的方差值?
- 22. 为什么我在Rails中搜索查询时出现“错误的参数数量(给定1,预期为0)”?
- 23. 为什么会给出“未定义”的错误?
- 24. 为什么我会在参数列表后出现错误?
- 25. 尽管请求成功,但为什么会出现错误
- 26. SOLRJ为什么会出现未定义的字段错误
- 27. 为什么会出现此错误? (传递值加入表)
- 28. 分配给参考时,为什么会出现此错误(C2582:'operator ='功能在'B'中不可用)?
- 29. 错误:预计会出现缩进块
- 30. 预计会出现缩进块错误
@Artefacto我最初没有这样做,因为该手册指出它不是5.3中的情况,但我更新了我的答案。 – 2010-09-03 19:41:23
我会直接调用它,因为我刚才有一个脚本在我的服务器上用“call_user_func_array”正常工作的情况,但是对于我的客户端它会引发错误(我使用5.3.x,他也一定是)。所以它似乎有点触摸和去。 – 2012-04-12 10:00:58