如何在for循环中创建和执行一系列PHP变量函数?
我不喜欢在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
变量函数
,但我已经反复阅读了手册:
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认为我应该使用匿名函数也是正确的,我已经尝试过了,但我在自己的测试中错过了什么(在顶部的问题中仍然可见)是因为我没有用;
来界定作业的结尾。您关于使用的提示非常有用。谢谢。有关在此上下文中部署使用的更多信息,请参见: