当前位置: 代码迷 >> PHP >> preg_replace_callback 中 function($match) use ($ten), 里面的 use 是什么意义
  详细解决方案

preg_replace_callback 中 function($match) use ($ten), 里面的 use 是什么意义

热度:271   发布时间:2016-04-28 18:01:42.0
preg_replace_callback 中 function($match) use ($ten), 里面的 use 是什么意思
$string = "Some numbers: one: 1; two: 2; three: 3 end";
$ten = 10;
$newstring = preg_replace_callback(
    '/(\\d+)/',
    function($match) use ($ten) { return (($match[0] + $ten)); },
    $string
    );
echo $newstring; 

------解决思路----------------------
use 中文释义 使用

function($match) use ($ten) { return (($match[0] + $ten)); }
让变量 $ten 在匿名函数中可以被使用

相当于
$ten = 10;
function foo($match) {
  global $ten;
  return (($match[0] + $ten));
}
不过如果 $ten 不是全局变量的话就有麻烦了
------解决思路----------------------
php 5.3新增的闭包语法

闭包函数(匿名函数)可以从父作用域中继承变量   任何此类变量都应该用 use 语言结构传递进去


------解决思路----------------------
5.2  不能用你可以这样
$string = "Some numbers: one: 1; two: 2; three: 3 end";
$ten = 10;
$newstring = preg_replace_callback(
    '/(\\d+)/',
    create_function('$match', "return \$match[0] + $ten;"),
    $string
    );
echo $newstring;
  相关解决方案