将两个参数传递给array_map中的函数

时间:2016-05-27 08:35:38

标签: php parsing csv

我正在解析CSV文件,大型CSV文件,我需要解析str_getcsv函数(分隔符)的第二个参数,但我真的不知道如何...

我试图绕过数组映射函数,但是php向我抛出一个错误,允许超出内存大小。我也尝试过array_walk,但结果相同。

这是函数的样子,现在......

function parseIt($file)
{
    $file = file($file);
    // foreach ($file as $key => $value)
    // {
    //     $rows[] = str_getcsv($value, ';');
    //     unset($file[$key]);
    // }
    // array_walk($file, function(&$item)
    // {
    //     $item = str_getcsv($item, ';');
    // });

    // exit();
    return array_map('str_getcsv', file($file));
}

所以,现在,我正在试图弄清楚如何通过array_map将第二个参数传递给str_getcsv ......

1 个答案:

答案 0 :(得分:1)

您可以在array_map中设置分隔符,但是:

<?php

$string = [
    "this;is;a;string;aaa",
    "this2;is;a;string;aaa",
    "this3;is;a;string;aaa",
    "this4;is;a;string;aaa",
];

$output = array_map('str_getcsv', $string, [";", ";", ";", ";", ]);
[";"]中的

您必须在输入数组中添加与行数一样多的分隔符,例如。

来自str_getcsv的其他参数可以同样的方式完成。