PHP 使用代码作为函数,变量不起作用

Roc*_*ket 0 php function

我有这个代码可以很好地独立运行:

file_put_contents('dataFile', implode('', 
    array_map(function($data) {
    return stristr($data,"NSQ = ") ? "NSQ = school\n" : $data;
    }, file('dateFile'))
));
Run Code Online (Sandbox Code Playgroud)

这会读取 dataFile 并找到条目NSQ =并将其更新为NSQ = school

我要多次重用这个,所以把它改成了一个函数:

function updatesite($site) {
file_put_contents('dataFile', implode('', 
    array_map(function($data) {
    return stristr($data,"$site = ") ? "$site = school\n" : $data;
    }, file('dateFile'))
));
}
Run Code Online (Sandbox Code Playgroud)

最初,我得到了一个$site不存在的错误,所以我global $site;在返回之前添加了。

这停止了​​错误,但它不会更新文件。

有什么办法可以使用这样的变量吗?

d3L*_*d3L 5

您可以使用use将变量传递给函数回调,如下所示:

function updatesite($site) {
    file_put_contents('dataFile', implode('', 
        array_map(function($data) use ($site) {
            return stristr($data,"$site = ") ? "$site = school\n" : $data;
        }, file('dateFile'))
    ));
}
Run Code Online (Sandbox Code Playgroud)