mdantas/csv-map

该库的目标是实现Spout之上的方法,用于对CSV文件进行分组、过滤、提取一些信息。

v2.0 2020-07-21 15:32 UTC

This package is auto-updated.

Last update: 2024-09-22 01:56:37 UTC


README

CSV-Map

该库的目标是使用过滤器方法管理一些CSV文件,它是基于box/soap构建的,更多详细示例请参阅:测试示例

需求
-   >= PHP7.2
-   box/spout 3.1.0
安装
composer require mdantas/csv-map
方法

所有方法都可以在CsvMap\Interfaces\CsvCollectionInterface中找到。

getHeaders - 获取CSV文件中的标题数组。

hasHeader - 检查CSV文件中是否存在标题。

groupBy - 根据数组索引分组值,索引基于$row[headerName]

combine - 通过行索引的值组合数组,并相交某些标题的值。

extract - 提取仅包含值的列,可以有或没有重复值。

isEmpty - 检查集合是否为空。

each - 对每个项目简单可调用函数的快捷方式。

toArray - 生成一个数组,通过标题名称索引行值,例如:[$headername => $rowValue]

示例
use CsvMap\Collection;

$fileCsvPath = './filecsv';

$csvCollection = Collection::factory($fileCsvPath);

$csvCollection->getHeaders(): array;

$csvCollection->hasHeader('headerName'): bool;
 
$csvCollection->combine('id', 'name', 'id', ...): array;
    
$csvCollection->groupBy('id'): array;

$csvCollection->extract('id', true): array // Last param remove duplicated registers

$csvCollection->isEmpty(): bool;

$csvCollection->each(function($item) => {
    print_r($item);
});

$csvCollection->toArray();
测试
composer run tests