我在PHP中遇到了这个错误:
致命错误:函数名称必须是字符串
我不知道为什么......这是我的代码:
$string = function($airport, $return) { blabla return something; }
在一个函数中,我称之为:
$string2 = $string("EGLL", "raw");
这会产生错误。
答案 0 :(得分:3)
这是一个范围问题。你说“只是一个函数”,我认为这意味着“在另一个函数内部。”
此代码将起作用,因为您在全局范围内定义和使用$string
:
$string = function($airport, $return) { echo $airport , ', ', $return; };
$string2 = $string("EGLL", "raw");
但这不会:
$string = function($airport, $return) { echo $airport , ', ', $return; };
function foo() {
$string2 = $string("EGLL", "raw");
}
foo();
失败是因为函数$string
中没有变量foo
。这就像调用null("EGLL", "raw")
,这是无效的。
您需要使用global
关键字:
$string = function($airport, $return) { echo $airport , ', ', $return; };
function foo() {
global $string; // add this line
$string2 = $string("EGLL", "raw");
}
foo();
请注意,这不是 必然是良好做法;这取决于你真正想做的事情。
另请注意,在函数定义之后需要;
以避免语法错误。