PHP变量函数和语言结构

时间:2014-10-07 09:41:36

标签: php function variables

我试图理解为什么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。

2 个答案:

答案 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');