回答
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