【问题标题】:Setting a global variable's value inside an anonymous function在匿名函数中设置全局变量的值
【发布时间】:2021-02-14 11:15:27
【问题描述】:

我正在使用Goutte 来抓取网站。我正在尝试将$node->text() 值设置为->each(function ($node) {..}); 匿名函数内的全局变量$myGlobalVar

$myGlobalVar = '';

$crawler->filter('.the-link-class')->each(function ($node) {
    if($myGlobalVar == ''){
        print "using first " . $node->text() . "\n";
        $myGlobalVar = $node->text();            
    }
});

print "myGlobalVar: " . $myGlobalVar . "\n"; # always empty !!!!!!

我还尝试了 answer I found 中建议的 use(&$myGlobalVar) 闭包语法。当我将相关代码修改为->each(function use(&$myGlobalVar) ($node) {.. 时,出现语法错误。

【问题讨论】:

    标签: php closures global-variables anonymous-function


    【解决方案1】:

    您的语法无效。

    请更改自:

    ->each(function use(&$myGlobalVar) ($node) {..
    

    到:

    ->each(function ($node) use(&$myGlobalVar) {..
    

    另外,如果变量$myGlobalVar是在全局范围内声明的,那么可以使用global关键字直接访问和修改变量

    【讨论】:

      猜你喜欢
      • 2014-08-20
      • 1970-01-01
      • 2016-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多