Lazier CSV provides a simple way to handle CSV files.
Using Composer:
composer require lazier/csv
Example:
<?php
use Lazier\Csv\CsvFile;
foreach(CsvFile::createFromString("id,name\n1,foo\n2,bar") as $row => $data) {
echo $data['id'] . ': ' . $data['name'] . PHP_EOL;
}
// will output:
// 1: foo
// 2: bar
Example:
<?php
use Lazier\Csv\CsvFile;
foreach(CsvFile::createFromFile('example.csv', useHeaderRow: false) as $data) {
echo $data[0] . ': ' . $data[1];
}
Ways to create an instance of CsvFile
:
create(<options>)
– Creates an empty CSV filecreateFromArray(array $data)
– Creates an CSV file with given datacreateFromFile(string $filename, <options>)
– Loads CSV file by given filecreateFromResource(resource $handle, <options>)
– Loads CSV file by given resourcecreateFromString(string $input, <options>)
– Loads CSV file by given stringcreateFromUrl(string $url, <options>)
– Loads CSV file by given URL
Optional options for creating an instance of CsvFile
:
useHeaderRow
(default:true
) Uses first row as keys for following rowsseparator
(default:,
) Sets the field separator (one single-byte character only)enclosure
(default:"
) Sets the field enclosure character (one single-byte character only)escape
(default:\
) Sets the escape character (one single-byte character)
<?php
use Lazier\Csv\CsvFile;
$csvFile = CsvFile::createFromArray([
['id' => '1', 'name' => 'Nina'],
['id' => '2', 'name' => 'Angela'],
]);
$csvFile->add(['id' => '3', 'name' => 'John']);
// You can save your modified CSV file this way:
$csvFile->saveAs('names.csv');
// You can also output the CSV contents this way:
echo $csvFile->asString();