【发布时间】:2015-09-01 04:47:11
【问题描述】:
这可能是一个非常愚蠢的问题,但我就是无法理解 PHP 作用域是如何处理这段代码的:
$leagueKey = 'NFL';
$response['response'] = array_filter($response['response'], function($tier){
return ($tier['LeagueKey'] === $leagueKey ? true : false);
});
当我运行它时,我得到一个“未定义变量:leagueKey”异常。另一方面,这非常有效:
$response['response'] = array_filter($response['response'], function($tier){
return ($tier['LeagueKey'] === 'NFL' ? true : false);
});
为什么 PHP 在 array_filter 函数中看不到我的 $leagueKey 变量?
谢谢!
【问题讨论】:
-
因为
$leagueKey是在该函数之外定义的。为了使用它,您可以在匿名函数中使用global $leagueKey,但这不是最好的方法 -
因为它超出了范围,就像任何函数一样,您必须将外部参数提供给它。
$leagueKey在函数之外,字符串'NFL'在里面,所以它可以工作。 -
试试这个 $response['response'] = array_filter($response['response'], function($tier) use $leagueKey { return ($tier[' LeagueKey'] === $leagueKey ? true : false); });
-
不应将其标记为重复...。这是一个很好的问题,与另一个不同。只是一个类似的答案。
标签: php array-filter