2012-03-09 59 views
5
call_user_func('array_pop', $myarray); 

給出 '參數1至array_pop()預期爲基準,給定值',而array_pop()需要從call_user_func調用時棄用呼叫按引用()

call_user_func('array_pop', &$myarray); 

給出'呼叫時間通過引用已被棄用'。

那我該怎麼辦?我在Windows上使用「PHP Version 5.3.5」,並且不推薦使用棄用的警告。

謝謝!

+1

也許這是一個解決方法:http://stackoverflow.com/questions/295016/is-it-possible-to-pass-parameters-by-reference-using-call-user-func-array – 2012-03-09 09:07:25

回答

5

要麼乾脆直接把它叫做:

array_pop($myarray); 

或者使用call_user_func_array(),它接受作爲參數引用數組沒有你瞭解通話時間大呼小叫傳址引用:

call_user_func_array('array_pop', array(&$myarray)); 

這不會引起關於通話時間傳遞參考的警告是因爲這種情況實際上沒有發生。 passing a variable by reference與創建一個引用數組並傳遞(按值排列)之間存在細微的差異。

+0

打敗我到它:) +1 – Dan 2012-03-09 09:08:13

+0

謝謝!我實際上在谷歌搜索結果中讀到了這個答案,但是我沒有看到call_user_func被call_user_func_ARRAY取代,所以我認爲我必須改變我的函數來包裝數組(這對我來說是不可能的,因爲我正在使用array_pop)。 – 2012-03-09 10:01:01

+0

簡單天才...... – 2017-06-13 19:34:31