如何在 array_map() 中使用 parameters/arguments 作为我的回调函数?

How can I use parameters/arguments for my callback function in array_map()?

我正在使用此代码从 csv 文件获取数组:

array_map('str_getcsv', 'file.csv')

但是在 array_map 函数中使用 str_getcsv() 时如何设置分隔符?

如果您需要将额外的参数附加到需要可调用函数的函数,最简单的方法是传入一个带有预定义参数的包装函数

$array = array_map(function($d) {
    return str_getcsv($d, "\t");
}, file("file.csv"));

或者,您可以使用闭包的 use() 语法传入参数。

$delimiter = "|";
$array = array_map(function($d) use ($delimiter) {
    return str_getcsv($d, $delimiter);
}, file("file.csv"));

可以使用此技术完成的另一件有趣的事情是创建一个函数,该函数 returns 具有内置的预定义值。

function getDelimitedStringParser($delimiter, $enclosure, $escapeChar){
    return function ($str) use ($delimiter, $enclosure, $escapeChar) {
        return str_getcsv($str, $delimiter, $enclosure, $escapeChar);
    };
}

$fileData = array_map("trim", file("myfile.csv"));
$csv = array_map(getDelimitedStringParser(",", '"', "\"), $fileData);