【问题标题】:php array_map callback parameter scopephp array_map 回调参数范围
【发布时间】:2011-07-27 05:03:49
【问题描述】:

在下面的代码中,传递给 wrap_map 的回调函数在外部函数中看不到参数,为什么? (详见代码注释)

public static function wrap_implode($ar, $wrap, $delim){
  echo "wrap is $wrap"; //wrap is ok
  $res = array_map(function($val){
     echo "wrap is $wrap"; //wrap is not set here!
     return $wrap. $val . $wrap;
   }, $ar);

   return implode($delim, $res);
}

【问题讨论】:

    标签: php scope php-5.3


    【解决方案1】:

    因为它在另一个范围内。如果您想使用$wrap,请尝试:

    function($val) use ($wrap){
       //etc
    }
    

    当然,你这里的函数不需要回调:

    return $wrap.implode($wrap.$delim.$wrap,$ar).$wrap;
    

    【讨论】:

    • 很酷的使用关键字(对于一个函数),我学到了一些东西:)
    猜你喜欢
    • 1970-01-01
    • 2011-03-22
    • 2020-09-09
    • 2017-05-08
    • 2014-05-11
    • 2010-11-01
    • 2012-06-07
    • 2021-06-13
    • 1970-01-01
    相关资源
    最近更新 更多