【问题标题】:Create functions in a loop with names from elements in an array in php在循环中创建函数,名称来自php中数组中的元素
【发布时间】:2014-04-03 08:31:38
【问题描述】:

我正在尝试构建一个网站,其中包含允许用户编辑、查看和删除 mySQL 表中的记录的表单。我已经做到了。现在我希望用户能够添加新的表单和表格,但我需要能够创建具有基于数组元素名称的函数。

下面的代码不起作用,但是还有什么可以吗?

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

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

【问题讨论】:

标签: php arrays function for-loop


【解决方案1】:

这是一个想法。拥有一个功能并将这些项目作为参数传递。可能有用!

【讨论】:

    【解决方案2】:

    使用匿名函数:

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

    然后你调用其中一个函数为:

    $tables[$i]['form']();
    

    【讨论】:

    • 感谢您的回答。这似乎没有通过循环设置函数来迭代数组元素的名称。当我使用数组中的名称调用函数时,我收到错误消息 call_user_func_array() 期望参数 1 是有效的回调,未找到函数“注册”或函数名称无效。有什么特殊的方法可以调用这些函数吗?
    • 我已经展示了如何调用存储在数组中的函数。
    • 我认为我问的问题不够清楚。我希望能够使用从数组中获取的名称来声明函数,而不是将函数放入要通过访问数组元素调用的数组中,如上所示。我认为尽管无论如何我都可以使用您的解决方案,但我需要问另一个关于在 Wordpress add_submenu 函数中引用函数的问题。
    • 啊,既然你已经澄清了,我已经添加了一个重复的问题链接,显示如何使用eval
    • 这正是我想要的。它做得很好。谢谢你一直陪着我。
    【解决方案3】:

    您可以使用anonymous functions 或使用create_function(虽然您将函数定义为字符串,但有点hacky)...但我认为Ed Heal's answer 可能是最好的。只需要一个函数,然后将表中不同的值作为参数传递...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多