我只想弄清楚为什么我不能这样做:
<?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或更高版本。
答案 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(),参数一定不能 括在括号内。