在php中使用匿名函数改变外部函数中的多个变量
Using anonymous function in php to change multiple variables in outer function
这是我的匿名函数:
$step = function() use ($text,$count,$new_text) {
$new_text .= $text[$count];
$count++;
我正在读取一个长文本值并扫描错误字符。如果 $text[$count] 的值没问题,我想将它添加到新的文本变量中,并通过调用 $step() 来增加计数。当然,我可以在我的代码中一遍又一遍地重复这两行,但是使用匿名函数似乎要简单得多。唯一的问题是它不起作用。外部函数中的变量没有改变。
我做错了什么。或者,如果有的话,有什么不同的方法可以做到这一点?必须有一种方法可以抽象出整个函数中几行重复的代码。
如果想要在执行函数后修改变量版本,则必须通过引用传递,如下所示:
<?php
$text = 'Some text';
$anon = function() use (&$text) {
$text .= ' and more...' ;
};
$anon();
print $text; // returns: Some text and more...
use
语句只是从父作用域继承变量。
这是我的匿名函数:
$step = function() use ($text,$count,$new_text) {
$new_text .= $text[$count];
$count++;
我正在读取一个长文本值并扫描错误字符。如果 $text[$count] 的值没问题,我想将它添加到新的文本变量中,并通过调用 $step() 来增加计数。当然,我可以在我的代码中一遍又一遍地重复这两行,但是使用匿名函数似乎要简单得多。唯一的问题是它不起作用。外部函数中的变量没有改变。
我做错了什么。或者,如果有的话,有什么不同的方法可以做到这一点?必须有一种方法可以抽象出整个函数中几行重复的代码。
如果想要在执行函数后修改变量版本,则必须通过引用传递,如下所示:
<?php
$text = 'Some text';
$anon = function() use (&$text) {
$text .= ' and more...' ;
};
$anon();
print $text; // returns: Some text and more...
use
语句只是从父作用域继承变量。