2012-10-16 94 views
0

嗨我有點搞砸了我的Lambda和好像我 匿名函數是沒有得到從上面的變量,PHP lambda函數

一些瓦爾要去中

print_r($cacheTypes); 
print_r($servers); 

Array 
(
    [concreter] => on 
    [config] => on 
) 
Array 
(
    [0] => dev-www.domain.com 
) 

的功能

$urls = array_walk($servers, 
    create_function('&$n', 
     '$n = "http://{$server}/".($vcpParam 
      ? "flush-file-cache" 
      : "flushFileCache.php" 
     )."?tags=".implode("-", array_keys($cacheTypes));' 
    ) 
); 

錯誤

Warning: array_keys() expects parameter 1 to be array, null given 
Warning: implode() [<a href='function.implode'>function.implode</a>]: Invalid arguments passed 

非常感謝。我敢肯定它是不承認,我輸入查詢的變量,但我不知道爲什麼

+0

PHP的版本,你運行? – nickb

+0

版本5.3 tmk – ehime

+0

我對lambda函數並不熟悉,但是在常規的PHP函數中,您需要在函數中將全局變量聲明爲全局變量:'global $ cacheTypes;' – Travesty3

回答

6

您可以使用

$urls = array_map(function ($var) use($cacheTypes, $vcpParam) { 
    return "http://{$var}/" . ($vcpParam ? "flush-file-cache" : "flushFileCache.php") . "?tags=" . implode("-", array_keys($cacheTypes)); 
}, $servers); 
+0

完美工作,等待接受。 – ehime

+0

@愛媛很高興知道.... :) – Baba