在下面的代码中,传递给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);
}
答案 0 :(得分:22)
因为它在另一个范围内。如果您想使用$wrap
,请尝试:
function($val) use ($wrap){
//etc
}
当然,你的函数不需要回调:
return $wrap.implode($wrap.$delim.$wrap,$ar).$wrap;