提问者:小点点

如何在for循环中创建和执行一系列PHP变量函数?


我不熟悉在PHP中使用变量函数,但我反复重读了手册:

  • https://www.php.net/manual/en/functions.variable-functions.php

我根本不清楚我做错了什么:

for ($i = 0; $i < 10000; $i++) {

  $Function_Name = 'Test_Function_'.sprintf('%03d', $i);

  function $Function_Name() {

    echo  __FUNCTION__.' is working.';
  }

  $Function_Name();
}

为什么这个循环没有创建和运行10000个变量函数?

另一种方法(使用匿名函数)似乎也不起作用:

for ($i = 0; $i < 10000; $i++) {

  $Function_Name = 'Test_Function_'.sprintf('%03d', $i);

  ${$Function_Name} = function () {

    echo  __FUNCTION__.' is working.';
  }

  ${$Function_Name}();
}

共1个答案

匿名用户

请注意,匿名(lambda)函数只有在用“use”显式列出(闭包)变量时才会从外部作用域看到(闭包)变量,即。

${$FUNCTION_NAME}=函数()使用($FUNCTION_NAME)

然后它就像预期的那样工作了。

for ($i = 0; $i < 10000; $i++) 
{    
  $Function_Name = 'Test_Function_'.sprintf('%03d', $i);
  ${$Function_Name} = function () use ($Function_Name)
  {
    echo  $Function_Name.' is working.'.PHP_EOL;
  };
  ${$Function_Name}();
}

相关问题