【问题标题】:Using anonymous function in php to change multiple variables in outer function在php中使用匿名函数更改外部函数中的多个变量
【发布时间】:2016-02-26 23:21:55
【问题描述】:

这是我的匿名函数:

            $step = function() use ($text,$count,$new_text) {                           
            $new_text .= $text[$count];                                             
            $count++;

我正在读取一个长文本值并扫描错误字符。如果 $text[$count] 的值没问题,我想将它添加到新的文本变量中,并通过调用 $step() 来增加计数。当然,我可以在我的代码中一遍又一遍地重复这两行,但是使用匿名函数似乎要简单得多。唯一的问题是它不起作用。外部函数中的变量没有变化。

我做错了什么。或者,如果有的话,有什么不同的方法来做到这一点?必须有一种方法可以在整个函数中抽象出几行重复的代码。

【问题讨论】:

  • forforeach 在这种情况下似乎更容易,不是吗?

标签: php scope anonymous-function


【解决方案1】:

如果想要在函数执行后修改变量版本,您必须通过引用传递,如下所示:

<?php 

$text = 'Some text';

$anon = function() use (&$text) {
    $text .= ' and more...' ;
};

$anon();

print $text; // returns: Some text and more...

use 语句只是从父作用域继承变量。

【讨论】:

    猜你喜欢
    • 2015-09-20
    • 1970-01-01
    • 2012-07-10
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    • 2018-03-07
    • 1970-01-01
    • 2013-11-22
    相关资源
    最近更新 更多