buibr / csv-helper
Parser/Builder of CSV data to file/file to data
Installs: 8 016
Dependents: 1
Suggesters: 0
Security: 0
Stars: 1
Watchers: 2
Forks: 1
Open Issues: 0
Requires (Dev)
- phpunit/phpunit: ^8.1
- vimeo/psalm: ^4.5
README
Parser/Builder of CSV data to file/file to data
This is build for my personal use on big csv data.
Installation
The preferred way to install this extension is through composer.
Either run
composer require --prefer-dist buibr/csv-helper "^1.5"
alternatively add
"buibr/csv-helper": "*"
to the required section of your composer.json
file.
Usage
Get data as array:
<?php use buibr\csvhelper\CsvParser; $parser = new CsvParser('path/to/file'); $data = $parser->fromFile()->toArray(); ?>
Get data as array of format from file
<?php use buibr\csvhelper\CsvParser; $data = (new CsvParser)->fromFile('path/to/file')->toArray(); ?>
Get only one column as one dimensional array.
Example file.csv
name,email,phone
aaa,bbb,ccc
ddd,eee,fff
ggg,hhh,iii
$data = (new CsvParser)->fromFile('path/to/file')->toColumn('email'); $data = [ 0 => "bbb", 1 => "eee", 2 => "hhh" ];
From 1.5.4 Get only neded columns.
$data = (new CsvParser('path/to/file'))->toColumns(['email', 'phone']); [ 0 => [ "bbb", "ccc" ] 1 => [ "eee", "fff" ] 2 => [ "hhh", "iii" ] ]
As Array
$csv = new CsvParser('path/to/file'); // get firs telement $first = $csv->current(); Array ( [0] => John [1] => Doe [2] => johndoe@test.test [3] => 003344003203 [4] => Unknown ) // returns associative array with data of current position $assoc = $csv->current(true); Array ( [Firstname] => John [Lastname] => Doe [Email] => johndoe@test.test [Phone] => 003344003203 [Adress] => Unknown ) // get next element $csv->next(); $second = $csv->current();
Loop through csv records.
$csv = new CsvParser('path/to/file'); while( $csv->valid() ){ // get item as array. $item = $csv->current(true); // get the the value of Firstname column from current record. $name = $csv->column('Firstname'); // get some of columns $fullname = \implode(' ', $csv->columns(['Firstname','Lastname'])); $csv->next(); }