$string='string';
function change(&$str){
$str='str';
}
call_user_func('change',$string);
echo $string;
輸出是'字符串'。但是$ str引用$ string,所以在$ str中的改變也應該改變$ string?爲什麼價值還是一樣?爲什麼通過引用不會改變變量的值?
$string='string';
function change(&$str){
$str='str';
}
call_user_func('change',$string);
echo $string;
輸出是'字符串'。但是$ str引用$ string,所以在$ str中的改變也應該改變$ string?爲什麼價值還是一樣?爲什麼通過引用不會改變變量的值?
這是不可能的call_user_func()
:
注意,對於call_user_func()的參數沒有被引用傳遞。
這就是說你仍然可以使用call_user_func_array()。現在可以使用該參考。以下是您想要的代碼:
function change(&$str)
{
$str='str';
}
$string='string';
$parameters = array(&$string);
call_user_func_array('change',$parameters);
echo $string;
但是,此解決方案現在已被棄用。
您仍然可以擺脫call_user_func()
,並簡單地做:
function change(&$str)
{
$str='str';
}
$string='string';
change($string);
echo $string;
http://php.net/manual/en/function.call-user-func.php
它清楚地提到,對於call_user_func()的參數不被引用傳遞。
call_user_func
不通過參考。從the PHP docs:
請注意,call_user_func()的參數不通過引用傳遞。
(change($string)
,在另一方面,給"str"
你所期望的)。
延伸閱讀:Why does PHP's call_user_func() function not support passing by reference?
這是你的錯誤消息:
<br />
<b>Warning</b>: Parameter 1 to change() expected to be a reference, value given on line <b>5</b>
因爲call_user_func
引用不傳遞參數。
嘗試像這樣運行它:
$string='string';
function change(&$str){
$str='str';
}
change($string);
echo $string;