想实现一个内部函数用于回调,所以参数个数是固定的,但又需要外部的参数用于改变返回算法,所以想在内部函数内使用外部函数的参数:
function outer($a, $b) {
function inner($b) {
var_dump($a);//测试a,这里肯定是NULL
}
inner($b);
}outer('param_a', 'param_b');
这样结果肯定是NULL,但用对内部函数用global也不行,请问有没有解决方法?

解决方案 »

  1.   

    闭包?PHP里面貌似没有闭包这个说法,你倒是可以用create_function创建匿名函数试试
      

  2.   

    把$a,$b组成一个数组传给内部函数,可以不?$arr=array('a'=>$a,'b'=>$b);
    function inner($arr) {
            var_dump($arr['a']);
        }
      

  3.   

    把$a,$b组成一个数组传给内部函数,可以不?$arr=array('a'=>$a,'b'=>$b);
    function inner($arr) {
            var_dump($arr['a']);
        }
      

  4.   

    php5.3已有闭包:function outer($a, $b) { $closure = function($b) use ($a){
    var_dump($a);
    };
    $closure ($b);
    }outer('param_a', 'param_b');outer('param_a1', 'param_b1');
      

  5.   


    不行哦,$arr还是在外边,和inner里的不是一个