闭包在PHP中是如何工作的(如果有的话)?
我试图使用在外部函数中定义的变量筛选此数组,但未定义该变量。这将在JS中工作。我做错了什么?我如何在PHP中实现这一点?您可以(正确地)将其写成: 不能只传递包含函数名的字符串。你也可以写闭包在PHP中是如何工作的(如果有的话)?,php,Php,我试图使用在外部函数中定义的变量筛选此数组,但未定义该变量。这将在JS中工作。我做错了什么?我如何在PHP中实现这一点?您可以(正确地)将其写成: 不能只传递包含函数名的字符串。你也可以写 function outer_function() { $nid = 3 $a_filtered_array = array_filter($an_array, function ($var) use ($nid) { print $nid; return $va
function outer_function() {
$nid = 3
$a_filtered_array = array_filter($an_array, function ($var) use ($nid) {
print $nid;
return $var->nid == $nid;
});
}
有关语法和语义的详细信息,请参阅。它们被称为匿名函数,请查看文档 这就是它们的工作原理:
function outer_function() {
$nid = 3
$exists = function ($var) use ($nid) {
print $nid;
return $var->nid == $nid;
}
$a_filtered_array = array_filter($an_array, $exists);
}
这种方法在JS中也会起作用(实际上更明确地说明了引擎盖下到底发生了什么)
这是什么版本的PHP?至少5.3?稍微修正一下。。。你不是忘了“使用”吗$存在=函数($var)使用($nid){…啊,太酷了。我试着使用匿名函数,但错过了使用部分。谢谢。废话。我刚刚发现我正在使用的服务器使用5.2。有些东西,不支持匿名函数。有什么建议吗?@Joren不要使用匿名函数:)没有匿名函数,使用PHP很容易,你只需要避免使用任何高阶函数例如
array\u map()
或array\u filter()
。如果您真的想使用它们,您可能可以安装更新版本的PHP。
function outer_function() {
$nid = 3
$exists = function ($var) use ($nid) {
print $nid;
return $var->nid == $nid;
}
$a_filtered_array = array_filter($an_array, $exists);
}
function outer_function()
{
$nid = 3;
$x=function ($var) {
print $nid;
return $var->nid == $nid;
};
$a_filtered_array = array_filter($an_array, $x);
}
function x() {
var w=function() {alert("foo")}
w()
}