2016-01-25 32 views
0

我得到这个错误在PHP中:PHP中的字符串函数致命错误

Fatal error: Function name must be a string

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

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

而且在功能我称之为通过:

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

并且这会产生一个错误。

+0

你使用哪个php版本?参考:http://php.net/manual/en/functions.anonymous.php –

+0

版本5.5.9,Safari,Mac OSX – douwe12345

+0

我应该像他的形式<?php function maximum($ x,$ y) {($ x> $ y)返回$ x; 否则返回$ y; } $ a = 23; $ b = 32; $ val = maximum($ a,$ b); echo“最大$ a,$ b是$ val \ n”; ?> – varunkumar

回答

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

注意,这不是一定好的做法;这取决于你真正想要做什么。

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

相关问题