0

やあみんな、どうにかして 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

大変助かります。入力している変数を認識していないことは確かですが、その理由はわかりません

4

1 に答える 1

6

使用できます

$urls = array_map(function ($var) use($cacheTypes, $vcpParam) {
    return "http://{$var}/" . ($vcpParam ? "flush-file-cache" : "flushFileCache.php") . "?tags=" . implode("-", array_keys($cacheTypes));
}, $servers);
于 2012-10-16T17:19:38.767 に答える