问题
In the following code the callback function passed to wrap_map can't see the argument in the outer function, why? (see code comment for detail)
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);
}
回答1:
Because it is in another scope. If you want to use $wrap
, try:
function($val) use ($wrap){
//etc
}
Of course, your function here doesn't need a callback:
return $wrap.implode($wrap.$delim.$wrap,$ar).$wrap;
来源:https://stackoverflow.com/questions/5505612/php-array-map-callback-parameter-scope