Heim >Backend-Entwicklung >PHP-Tutorial >preg_replace_callback 中 function($match) use ($ten), 里面的 use 是什么意思

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

WBOY
WBOYOriginal
2016-06-23 13:42:241121Durchsuche

$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;


谢谢 , 
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn