Maison  >  Article  >  développement back-end  >  preg_replace_callback 中 function($match) use ($ten), 里面的 use 是什么意思

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

WBOY
WBOYoriginal
2016-06-23 13:42:241105parcourir

$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 语言结构传递进去

use 中文释义 使用

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

相当于
$ten = 10;
function foo($match) {
  global $ten;
  return (($match[0] + $ten));
}
不过如果 $ten 不是全局变量的话就有麻烦了



5.2中可以替换吗? 
如果不是全局变量可以就不能做了吗?$ten;

php 5.3新增的闭包语法

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


5.2不能用吗?  没有替换方法吗?

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;

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;


谢谢 , 
Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn