【问题标题】:I am reading csv file and what array_map() function does in this function?我正在读取 csv 文件,array_map() 函数在这个函数中做了什么?
【发布时间】:2017-09-30 10:18:45
【问题描述】:

在 PHP 中,我想使用以下函数读取“.CSV”文件。

function csv_to_array($filename='a.txt',  $header_exist=true, $delimiter="\t")
{
    if(!file_exists($filename) || !is_readable($filename))
        return FALSE;

    $header = NULL;
    $data = array();
    if (($handle = fopen($filename, 'r')) !== FALSE)
    {
        while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
        {
            if($header_exist)
            {
                if(!$header)
                    $header = array_map('trim', $row);
                else
                    $data[] = array_combine($header, $row);
            }
            else
                $data[] = $row;
        }
        fclose($handle);
    }
    return $data;
}

我对@9​​87654322@ 函数有点困惑。我认为应该将列名映射到每个属性,那么如何获取和显示 eacg 属性?

谢谢!

【问题讨论】:

    标签: php csv multidimensional-array array-map


    【解决方案1】:

    打开array_map 的手册页可以看到:

    array_map — 将回调应用到给定数组的元素

    所以,你有一个回调,它是trim(一个核心 php 函数)和一个数组,它是 $row。因此,函数 trim 现在应用于 $row 的每个元素。

    所以,它相当于:

    $header = [];
    foreach ($row as $item) {
        $header[] = trim($item);
    }
    

    【讨论】:

      【解决方案2】:

      在 PHP 中,array_map(function_name, array) 函数将array 的每个值发送到function_name() 并返回一个新的array

      在您的情况下,$header 包含由 , 分隔的列名的 string。这意味着array_map() 函数将它们转换为array

      希望你能明白。

      【讨论】:

        猜你喜欢
        • 2011-04-15
        • 1970-01-01
        • 2020-11-04
        • 2018-04-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-02
        • 2016-12-24
        相关资源
        最近更新 更多