我不熟悉在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}();
}
请注意,匿名(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}();
}