我试图理解为什么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。
答案 0 :(得分:2)
它们意味着另一种用法:
<?php
$var = "some variable";
$a = "unset"; //also print, isset, echo, include
// you cannot do this:
$a($var);
当然,您可以使用包含函数名称的字符串取消设置或打印变量...
(或者我错过了什么?:))
答案 1 :(得分:2)
您实际上并没有将任何语言结构用作变量函数:
但是试试
$function = 'echo';
$function('Hello World');
它完全没有工作,完全按照文档
中的描述如手册中所述,使用echo周围的包装函数,然后可以将该函数用作变量函数
function myecho($value) {
echo $value;
}
$function = 'myecho';
$function('Hello World');