Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在for循环中创建和执行一系列PHP变量函数?_Php_Function - Fatal编程技术网

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

如何在for循环中创建和执行一系列PHP变量函数?,php,function,Php,Function,我不喜欢在PHP中使用变量函数,但我已经反复阅读了手册: 现在还不清楚我做错了什么: for ($i = 0; $i < 10000; $i++) { $Function_Name = 'Test_Function_'.sprintf('%03d', $i); function $Function_Name() { echo __FUNCTION__.' is working.'; } $Function_Name(); } ($i=0;$i

我不喜欢在PHP中使用
变量函数
,但我已经反复阅读了手册:

现在还不清楚我做错了什么:

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

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

  function $Function_Name() {

    echo  __FUNCTION__.' is working.';
  }

  $Function_Name();
}
($i=0;$i<10000;$i++)的
{
$Function\u Name='Test\u Function\u'.sprintf('%03d',$i);
函数$function_Name(){
回声功能正在工作;
}
$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}();
}
($i=0;$i<10000;$i++)的
{
$Function\u Name='Test\u Function\u'.sprintf('%03d',$i);
${$Function\u Name}=函数(){
回声功能正在工作;
}
${$Function_Name}();
}

请注意,匿名(lambda)函数只有在外部作用域中的(闭包)变量以“use”形式明确列出时才能看到它们,即

${$Function\u Name}=Function()使用($Function\u 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}();
}
($i=0;$i<10000;$i++)的

{    
$Function\u Name='Test\u Function\u'.sprintf('%03d',$i);
${$Function\u Name}=Function()使用($Function\u Name)
{
echo$Function\u Name.“正在工作”;
};
${$Function_Name}();
}

您在这里想要实现什么?我看不出这有什么用处。我正在设置一个速度测试。创建并运行10000个函数将为我提供基线。然后我将比较创建和包含10000个包含函数的文件。然后我将与创建和
eval()-ing
10000个字符串进行比较。不能使用变量定义函数。您必须使用变量的名称
函数function\u name(){
您可以使用匿名函数。
$some\u function=function(){/*do stuff*/}
然后调用
$some\u function();
谢谢,@NiettheDarkAbsol。在我发布之前,我尝试了一种使用匿名函数的替代方法(现在添加到上面的问题中)但我也做不到。出色的工作,Stefanov.sm。@NiettheDarkAbsol认为我应该使用匿名函数也是正确的,我已经尝试过了,但我在自己的测试中错过了什么(在顶部的问题中仍然可见)是因为我没有用
来界定作业的结尾。您关于
使用的提示非常有用。谢谢。有关在此上下文中部署
使用的更多信息,请参见: