有没有办法在数组中使用字符串作为函数的名称?

时间:2014-03-03 15:31:44

标签: php arrays function wordpress

我想声明一系列函数,并使用数组元素命名它们。我不想将函数作为匿名函数放入数组中,但希望通过使用数组元素中的唯一名称直接调用它们来声明和访问它们。

我想要以下内容,但实际上有效:

for ($i=0;$i<count($tables);$i++) {

function $tables[$i][form]() {
}
// do something;
}

这些功能的目的是将子菜单页面添加到我的wordpress插件的管理页面。子菜单的数量及其名称取决于数据库中表格中的记录。

也许有更好的方法可以完全做到这一点。请帮忙。当我尝试在数组中使用匿名函数并在add_submenu函数中引用函数参数中的数组元素时,我在转到子菜单页面时一直遇到权限问题。

2 个答案:

答案 0 :(得分:0)

您的函数名称必须是常量。但是你仍然可以调用一个名字存储在数组中的函数。

如何使用动态名称调用函数。

http://www.php.net/call_user_func_array

您也可以使用匿名函数,但这有点困难。

http://www.php.net/manual/en/functions.anonymous.php

答案 1 :(得分:0)

eval功能是我正在寻找的解决方案:

for ($i=0;$i<count($tables);$i++) {
  $a[] = $tables[$i][form];
  }    

// Loop through the names of the submenu pages creating the required functions

foreach ($a as $functionname)

eval('function '.$functionname.' () {
// All the function code goes here
}');

我发现没有适当地进出php,导致我的大部分问题,尤其是在尝试引用变量时。

感谢Barmar将我指向PHP: define functions with variable names