php 读取 csv 转数组列表

我们有个文档需要修改,但是文档列太多,以及数量太大,以至于眼睛看起来很吃力,于是我决定做个简单的转化用脚本读取我想要验证的列的内容是否正确.

于是就产生了一个这样将csv快速的转为数组列表的功能函数

调用方法如下:

<?php
$result = csv_to_array('my.csv', ['A', 'C']);
var_dump($result);

功能代码如下:

<?php

function csv_to_array(string $file = '', array $need_column = [])
{
    $data = [];
    $r = fopen($file, 'r');
    $first_column = fgetcsv($r);
    $column = [];
    foreach ($first_column as $k => $value)
    {
        if (empty($need_column) || in_array($value, $need_column)) {
            $column[$k] = $value;
        }
    }
    while($row = fgetcsv($r))
    {
        foreach ($row as $k => $v)
        {
            if (!isset($column[$k])) {
                continue;
            }
            $item[$column[$k]] = $v;
        }
        $data[] = $item;
    }
    return $data;
}

CSV内容示例

 

 代码执行结果

array(3) {
  [0]=>
  array(2) {
    ["A"]=>
    string(1) "2"
    ["C"]=>
    string(1) "4"
  }
  [1]=>
  array(2) {
    ["A"]=>
    string(1) "3"
    ["C"]=>
    string(1) "5"
  }
  [2]=>
  array(2) {
    ["A"]=>
    string(1) "4"
    ["C"]=>
    string(1) "6"
  }
}

 

posted @ 2022-10-28 15:45  李照耀  阅读(174)  评论(0编辑  收藏  举报