chrgriffin / collection-macro-csv
Laravel 集合宏:将集合转换为CSV格式的数组或字符串。
v1.0.0
2020-03-03 16:35 UTC
Requires
- php: ^7.1.3
Requires (Dev)
- orchestra/testbench: ^4.0
- php-coveralls/php-coveralls: ^2.2
This package is auto-updated.
Last update: 2024-08-29 05:24:44 UTC
README
Laravel 集合宏:CSV
此包将添加两个集合宏,将您的集合转换为CSV格式的数组或字符串。
安装
通过composer在您的Laravel项目中安装
composer install chrgriffin/collection-macro-csv
如果您的Laravel版本支持自动发现(5.5版本及更高版本),那就够了!
对于Laravel的旧版本,您需要编辑您的config/app.php
文件,将服务提供者在providers数组中
return [ // ... 'providers' => [ // ... CollectionMacroCsv\ServiceProvider::class ] ];
用法
现在您应该能够在任何集合上链式调用->toCsvArray()
和->toCsvString
。
toCsvArray
->toCsvArray()
将二维关联数组集合转换为二维数组,'行'已准备好进行CSV格式化。
$associativeArray = [ [ 'name' => 'Geralt of Rivia', 'occupation' => 'Witcher' ], [ 'name' => 'Yennefer of Vengerberg', 'occupation' => 'Sorceress' ] ]; $csvArray = collect($associativeArray)->toCsvArray(); /* * [ * ['name', 'occupation'], * ['Geralt of Rivia', 'Witcher'], * ['Yennefer of Vengerberg', 'Sorceress'] * ] */
toCsvString
->toCsvString()
将二维数组集合转换为CSV字符串。
$associativeArray = [ [ 'name' => 'Geralt of Rivia', 'occupation' => 'Witcher' ], [ 'name' => 'Yennefer of Vengerberg', 'occupation' => 'Sorceress' ] ]; $csvString = collect($associativeArray)->toCsvString(); // name,occupation\nGeralt of Rivia,Witcher\nYennefer of Vengerberg,Sorceress
您还可以传入自定义分隔符,如果您需要使用除逗号以外的其他分隔符
$csvString = collect($associativeArray)->toCsvString('|'); // name|occupation\nGeralt of Rivia|Witcher\nYennefer of Vengerberg|Sorceress
不一致的列
对于数组索引彼此不一致的集合,将使用默认值null
来'填补'缺失的值
$associativeArray = [ [ 'name' => 'Geralt of Rivia', 'occupation' => 'Witcher', 'witcher_school' => 'Wolf' ], [ 'name' => 'Yennefer of Vengerberg', 'occupation' => 'Sorceress', 'magic_speciality' => 'Portals' ] ]; $csvArray = collect($associativeArray)->toCsvArray(); /* * [ * ['name', 'occupation', 'witcher_school', 'magic_speciality'], * ['Geralt of Rivia', 'Witcher', 'Wolf', null], * ['Yennefer of Vengerberg', 'Sorceress', null, 'Portals'] * ] */ $csvString = collect($associativeArray)->toCsvString(); // name,occupation,witcher_school,magic_speciality\nGeralt of Rivia,Witcher,Wolf,\nYennefer of Vengerberg,Sorceress,,Portals
结构要求
唯一的要求是您的集合只包含数组。如果在集合的第一级遇到非数组值,将抛出MalformedCollectionException
异常。
$malformedArray = [ [ 'name' => 'Geralt of Rivia', 'occupation' => 'Witcher', 'witcher_school' => 'Wolf' ], 'Yennefer of Vengerberg' ]; // throws a MalformedCollectionException $csvArray = collect($malformedArray)->toCsvArray();