[英]How do closures work in PHP (If at all)?
function outer_function() {
$nid = 3;
function exists($var) {
print $nid;
return $var->nid == $nid;
}
$a_filtered_array = array_filter($an_array, "exists");
}
我正在嘗試使用在外部函數中定義的變量來過濾此數組,但未定義該變量。 這將在JS中工作。 我在這做錯了什么? 我將如何在PHP中完成此任務?
您可以這樣寫(正確):
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);
}
有關語法和語義的詳細信息 ,請參見http://www.php.net/manual/zh/functions.anonymous.php 。
它們稱為匿名函數 ,請檢查文檔
他們就是這樣工作的:
function outer_function()
{
$nid = 3;
$x=function ($var) {
print $nid;
return $var->nid == $nid;
};
$a_filtered_array = array_filter($an_array, $x);
}
而且這種方法也可以在JS中工作
(並且實際上更清楚地說明了實際情況 )
function x() {
var w=function() {alert("foo")}
w()
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.