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

WBOY
Freigeben: 2016-06-23 13:42:24
Original
1119 Leute haben es durchsucht

$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; 
Nach dem Login kopieren


回复讨论(解决方案)

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;
Nach dem Login kopieren
Nach dem Login kopieren

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;
Nach dem Login kopieren
Nach dem Login kopieren


谢谢 , 
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage