【问题标题】:How can I use parameters/arguments for my callback function in array_map()?如何在 array_map() 中为我的回调函数使用参数/参数?
【发布时间】:2015-08-07 14:18:56
【问题描述】:

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

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

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

【问题讨论】:

    标签: php callback anonymous-function array-map


    【解决方案1】:

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

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

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

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

    【讨论】:

    • @Rizier123 感谢整容 :)
    猜你喜欢
    • 2011-07-27
    • 1970-01-01
    • 1970-01-01
    • 2016-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    • 1970-01-01
    相关资源
    最近更新 更多