好的,我已经为此找到了一个可能的解决方案,但出于某种原因,我无法在我的应用程序中使其工作。显然,如果我有一个包含名称功能的变量,我可以使用
<?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'。
我在哪里做错了?
答案 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($instance['taxon_field']);