PHP字符串函数中的致命错误

时间:2016-01-25 22:04:18

标签: php string

我在PHP中遇到了这个错误:

  

致命错误:函数名称必须是字符串

我不知道为什么......这是我的代码:

$string = function($airport, $return) { blabla return something; }

在一个函数中,我称之为:

$string2 = $string("EGLL", "raw");

这会产生错误。

1 个答案:

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

请注意,这不是 必然是良好做法;这取决于你真正想做的事情。

另请注意,在函数定义之后需要;以避免语法错误。