php手册 中关于
请注意,传入call_user_func()的参数不能为引用传递。
关于这个情况的解释,可自己搜索。我们可以自己定义一个函数解决这样的问题,实例如下:
<?php ini_set('display_errors',1); error_reporting(E_ALL); function call_user_func_super($h,&$c) { if(is_callable($h)) { return (is_array($h))?$h[0]->$h[1]($c):$h($c); } else { return false; } } $c = 1; $h = function(&$c){ echo ++$c; }; call_user_func_super($h,$c); echo $c.'<br/>'; $h = 'hhh'; function hhh(&$c){ echo ++$c; } call_user_func_super($h,$c); echo $c.'<br/>'; class nnn{ function hhh(&$c){ echo ++$c; } } $h = [new nnn,'hhh']; call_user_func_super($h,$c); echo $c.'<br/>';
其中call_user_func_super就是自定义的 函数,可以使用自定义变量。输出:
22 33 44
当然这里面只使用了一个自定义变量,如果多个,可自行更改就可以了。