如何在 array_map() 中为我的回调函数使用参数/参数? [英] How can I use parameters/arguments for my callback function in array_map()?

查看:33
本文介绍了如何在 array_map() 中为我的回调函数使用参数/参数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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

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

解决方案

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

>

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

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

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

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

function getDelimitedStringParser($delimiter, $enclosure, $escapeChar){返回函数 ($str) 使用 ($delimiter, $enclosure, $escapeChar) {返回 str_getcsv($str, $delimiter, $enclosure, $escapeChar);};}$fileData = array_map("trim", file("myfile.csv"));$csv = array_map(getDelimitedStringParser(",", '"', "\\"), $fileData);

I'm using this code to get an array from a csv file:

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

But how do I set delimeter for str_getcsv() when using it in array_map function?

解决方案

If you need to attach additional parameters to a function that requires a callable the easiest way it to just pass in a wrapper function with your parameters pre-defined

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

Alternatively you can pass in parameters using the use() syntax with the closure.

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

Another fun thing that can be done with this technique is create a function that returns functions with predefined values built in.

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);

这篇关于如何在 array_map() 中为我的回调函数使用参数/参数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆