【发布时间】:2014-10-07 09:41:35
【问题描述】:
我试图理解为什么PHP documentation for variable functions 声明:
变量函数不适用于 echo 等语言结构, print、unset()、isset()、empty()、include、require 等。 利用包装函数将这些构造中的任何一个用作 变量函数。
我尝试了其中一些,它们工作得很好:
function animal() {
return 'Monkey';
}
$animal = 'animal';
echo $animal();
返回Monkey - 正如人们所期望的那样。
与print 构造相同的结果 - 然后我尝试了unset(),它也工作得非常好:
function getIndex() {
return 0;
}
$index = 'getIndex';
$array = array(
'Monkey',
'Gorilla'
);
unset($array[$index()]);
print_r($array);
这将返回Array ( [1] => Gorilla )。
这里有什么我遗漏的吗?补充一下 - 我使用的是 PHP 5.5.14。
【问题讨论】:
-
您预计会发生什么?
-
试试
$function = 'echo'; $function('Hello World'); -
我想我明白了 - 最初我认为您将无法将这些构造与变量函数一起使用,但我相信它们只是指您无法使用 'echo 声明变量的事实' ( $echoVariable = 'echo' ) 例如并将其称为函数:$echoVariable()。
-
谢谢马克——我就是这么想的。