PHP - 变量的函数名称

时间:2012-09-13 22:29:11

标签: php function variables

好的,我已经为此找到了一个可能的解决方案,但出于某种原因,我无法在我的应用程序中使其工作。显然,如果我有一个包含名称功能的变量,我可以使用

<?php echo $variable(); ?>

输出具有相同名称的函数。

我正在使用Codeigniter。它在Form帮助器中有一个函数来输出一个文本字段,即

<?php form_input(); ?>

我有一个变量

<?php $instance['taxon_field'] = 'form_input'; ?>

如果我回显这个变量,我确实得到了所需的值'form_input'。但是,一旦我试图回应

$instance['taxon_field']()

我收到警告:

Message: Illegal string offset 'taxon_field'

和致命错误:

Call to undefined function p()

我在这里真的很无能,因为只回显变量给出'form_input',但回显$ variable()只给'p'。

我在哪里做错了?

2 个答案:

答案 0 :(得分:1)

这里的实际问题是$instance不是数组,而是字符串。从错误消息判断,它是一个字符串,其值以p开头。

语法$var[$key]不仅用于访问数组元素,还用于索引字符串,其中$var[0]将是$var的第一个字符(实际上是字节)等。 $instance是一个字符串,你写$instance['taxon_field']然后PHP会尝试将'taxon_field'转换为整数,以便索引到字符串。根据通常的conversion rules,这会产生0,因此整个表达式会为您提供字符串的第一个字母。

假设字符串以p开头,那么很明显为什么它会尝试调用具有该名称的函数。

答案 1 :(得分:1)

使用call_user_func()

call_user_func($instance['taxon_field']);