为什么我不能像使用其他函数那样使用变量来存储echo()?

时间:2011-09-06 13:09:17

标签: php variables

我只想弄清楚为什么我不能这样做:

<?php
$a = "echo";
$a("test");
?>

它只返回PHP Fatal error: Call to undefined function echo() in Command line code on line 1

当我能做到这一点时:

<?php
$a = "explode";
var_dump($a("|","1|2|3"));
?>

并获得预期结果。

修改:找到解决问题的方法(受以下各种答案的启发)。 在变量$ a中创建一个匿名函数,如下所示:

$a = function($a){echo $a;};

这只适用于PHP 5.3或更高版本。

5 个答案:

答案 0 :(得分:3)

那是因为echo is not a function but a language construct

请尝试使用print()。这应该可以正常工作。

编辑:正如评论中指出的那样,print也是一种语言结构,不起作用!只有解决方案是在用户定义的函数中包装echo或print。

<?php
function output($str){ 
    return print $str;
}

$a = "output";
$a("Lorem Ipsum ...");
?>

答案 1 :(得分:2)

Echo不是一个功能。它是一种类似于函数的语言结构,但它不返回任何值。因此,它不能用于变量函数($foo = 'echo'; $foo ('hello world');不起作用)

您必须使用echo(例如print)中的其他输出方法来执行您想要的操作。

答案 2 :(得分:1)

可能因为explode是一个函数而echo是一个语言结构。请注意,使用echo时没有括号。

答案 3 :(得分:0)

因为echo不是函数,所以它是PHP的内置部分。 见这里:http://www.php.net/manual/en/functions.variable-functions.php

答案 4 :(得分:0)

查看docs

  

echo()实际上不是一个函数(它是一种语言结构),所以你   不需要使用括号。 echo()(与其他一些不同   语言结构)不像一个函数,所以它不能   总是在函数的上下文中使用。另外,如果你想要的话   要将多个参数传递给echo(),参数一定不能   括在括号内。