为什么这个PHP程序不起作用?

时间:2010-05-12 12:42:52

标签: php function

我是PHP的新手,正在学习w3schools的PHP功能。它说“当函数名称在变量中时,PHP允许进行函数调用”

该计划有效

<?php
$v = "var_dump";
$v('foo');
?>

但是这个程序不起作用:

<?php
$v = "echo";
$v('foo');
?>

但如果我做echo('foo');它就有效。

我做错了什么?

4 个答案:

答案 0 :(得分:15)

PHP的此功能称为 变量功能

这里的问题是echo 实际上是一个函数,但语言结构和变量函数只能与函数一起使用。在您的第一个示例中,var_dump是一个函数,它工作正常。

来自Variable functions的PHP文档:

  

变量函数不会使用语言结构,例如echo(),print(),unset(),isset(),empty(),include( ),require()等。利用包装函数将这些结构中的任何一个用作变量函数。

您可以使用printf函数代替echo

$e = "printf"; // printf is a function not a language construct.
$e('foo');

或者你可以为echo写一个包装函数

$e = "echo_wrapper";
$e('foo');

function echo_wrapper($input) { // wrapper function that uses echo.
        echo $input;
}

答案 1 :(得分:1)

echo不是函数!您可以使用printf这是一个函数,它可以用来打印出来。

答案 2 :(得分:0)

有两个可能的问题,你应该解决它们:

  1. 该功能仅适用于PHP 5.3,我的回忆最好。这是最新的主要版本,所以你应该确保你正在使用它。很可能你不是。
  2. echo不是函数,而是PHP语言构造。您需要编写一个包装函数echoes传递给它的内容。

答案 3 :(得分:0)

这有效:

$v = "printf";
$v('foo');