功能名称带编号

时间:2014-11-01 08:21:57

标签: php

有一种方法可以在循环中为函数名添加数字吗?

我试着这样做:

for($i=0;$i<$length;$i++){
{function.$i}();
}

谢谢

2 个答案:

答案 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

但请记住:

  

有效的函数名称以字母或下划线开头,后跟   任意数量的字母,数字或下划线。

http://3v4l.org/sGLtj

因此,只要函数名称不以数字开头,您就可以使用带编号的函数名称。

答案 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);
}