这是一个范围界定问题。你说“只是一个功能”,我认为它是“在另一个功能中”。
此代码将工作,因为你都定义,并在全球范围内使用$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();
注意,这不是一定好的做法;这取决于你真正想要做什么。
另请注意,您需要在函数定义之后使用;
以避免语法错误。
你使用哪个php版本?参考:http://php.net/manual/en/functions.anonymous.php –
版本5.5.9,Safari,Mac OSX – douwe12345
我应该像他的形式<?php function maximum($ x,$ y) {($ x> $ y)返回$ x; 否则返回$ y; } $ a = 23; $ b = 32; $ val = maximum($ a,$ b); echo“最大$ a,$ b是$ val \ n”; ?> – varunkumar