2011-12-21 19 views
0

我試圖執行下面的PHP代碼:在閉包上下文中使用匿名函數在PHP中使用「use」關鍵字是不可能的?

$path_hierarchy = // function that returns an array 

return array_reduce(
    $terms, 
    function($val1, $val2) use ($path_hierarchy) { 
     return $val1 || in_array($val2, $path_hierarchy); 
    } 
); 

...但我發現下面的PHP錯誤:

PHP Parse error: syntax error, unexpected ')', expecting '{'

所以,我切換到下面的語法:

$path_hierarchy = // function that returns an array 

$callback = function($val1, $val2) use ($path_hierarchy) { 
    return $val1 || in_array($val2, $path_hierarchy); 
}; 

return array_reduce(
    $terms, 
    $callback 
); 

...這工作。我是否無法在匿名函數的上下文中將use關鍵字用作另一個函數的參數?

+0

你能複製並粘貼不工作的代碼嗎?這也有助於確切地看到它抱怨哪一行。 – 2011-12-21 20:20:44

回答

5

return $val1 || in_array($val2, $path_hierarchy))

問題出在這裏:第二個右括號。

+0

這是一個傳輸代碼的錯字...我沒有做直接複製粘貼。 – rybosome 2011-12-21 20:17:58

+0

要清楚,錯字是在堆棧溢出問題 - 我的實際代碼沒有這個錯字。 – rybosome 2011-12-21 20:19:45

+0

如果我用分號取代括號,它工作得很好。比照這個:https://gist.github.com/1507535:> php -f「bla.php」 >退出代碼:0 – TimWolla 2011-12-21 20:20:00

相關問題