有一种方法可以在循环中为函数名添加数字吗?
我试着这样做:
for($i=0;$i<$length;$i++){
{function.$i}();
}
谢谢
答案 0 :(得分:4)
此http://php.net/manual/en/functions.variable-functions.php需要“变量函数”。
PHP支持变量函数的概念。这意味着,如果一个 变量名称附加括号,PHP将查找 与变量求值的名称相同的函数,和 将尝试执行它。除此之外,这可以用来 实现回调,函数表等。
请参阅此示例:http://3v4l.org/sGLtj
function my_function_0() { echo "0"; }
function my_function_1() { echo "1"; }
function my_function_2() { echo "2"; }
function my_function_3() { echo "3"; }
for($i=0;$i<4;$i++)
{
$calling = 'my_function_'.$i;
$calling(); // by adding parentheses, a function with the same name with $calling's value will be called
}
这将调用函数并输出0123
但请记住:
有效的函数名称以字母或下划线开头,后跟 任意数量的字母,数字或下划线。
因此,只要函数名称不以数字开头,您就可以使用带编号的函数名称。
答案 1 :(得分:0)
要调用一个函数,将该名称生成为字符串,请使用call_user_func
函数,将生成的字符串作为其第一个参数传递。
示例强>
function function0(){echo "Function 0\n";}
function function1(){echo "Function 1\n";}
function function2(){echo "Function 2\n";}
for($i = 0; $i < 3; ++$i){
call_user_func('function' . $i);
}