1. Go to this page and download the library: Download nalabdou/algebra-csv library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
nalabdou / algebra-csv example snippets
use Nalabdou\Algebra\Algebra;
use Nalabdou\Algebra\Csv\CsvFileAdapter;
use Nalabdou\Algebra\Csv\ValueObject\CsvOptions;
Algebra::adapters()->register(CsvFileAdapter::from(new CsvOptions(coerceTypes: true)), priority: 100);
$result = Algebra::from('/data/orders.csv')
->where("item['status'] == 'paid'")
->groupBy('region')
->aggregate(['revenue' => 'sum(amount)', 'orders' => 'count(*)'])
->orderBy('revenue', 'desc')
->toArray();
use Nalabdou\Algebra\Algebra;
use Nalabdou\Algebra\Csv\CsvStringAdapter;
use Nalabdou\Algebra\Csv\ValueObject\CsvOptions;
use Nalabdou\Algebra\Csv\ValueObject\CsvString;
Algebra::adapters()->register(CsvStringAdapter::from(new CsvOptions()), priority: 90);
$csv = CsvString::from(
"id,status,amount\n1,paid,100\n2,pending,200\n3,paid,300\n",
new CsvOptions(coerceTypes: true),
);
$result = Algebra::from($csv)
->where("item['status'] == 'paid'")
->toArray();
use Nalabdou\Algebra\Algebra;
use Nalabdou\Algebra\Csv\CsvResourceAdapter;
use Nalabdou\Algebra\Csv\ValueObject\CsvOptions;
Algebra::adapters()->register(CsvResourceAdapter::from(new CsvOptions()), priority: 80);
$handle = fopen('/data/exports.csv', 'rb');
$result = Algebra::from($handle)
->tally('status')
->toArray();
fclose($handle); // caller owns the handle lifecycle
use Nalabdou\Algebra\Algebra;
use Nalabdou\Algebra\Csv\CsvFileAdapter;
use Nalabdou\Algebra\Csv\CsvStringAdapter;
use Nalabdou\Algebra\Csv\CsvResourceAdapter;
use Nalabdou\Algebra\Csv\ValueObject\CsvOptions;
Algebra::adapters()->register(CsvFileAdapter::from(new CsvOptions(coerceTypes: true)), priority: 100);
Algebra::adapters()->register(CsvStringAdapter::from(new CsvOptions()), priority: 90);
Algebra::adapters()->register(CsvResourceAdapter::from(new CsvOptions()), priority: 80);
$adapter = CsvFileAdapter::from(new CsvOptions(delimiter: ';', coerceTypes: true));
// Also valid — same result
$adapter = new CsvFileAdapter(new CsvOptions(delimiter: ';', coerceTypes: true));
$csv = CsvString::from("id,name\n1,Alice\n");
$csv = CsvString::from("id;name\n1;Alice\n", new CsvOptions(delimiter: ';'));
use Nalabdou\Algebra\Csv\ValueObject\CsvOptions;
$opts = new CsvOptions(
delimiter: null, // null = auto-detect from [',', ';', "\t", '|']
enclosure: '"', // field enclosure character
escape: '\\', // escape character
hasHeader: true, // first row = column names
encoding: null, // null = UTF-8; set 'Windows-1252', 'ISO-8859-1', etc.
skipEmpty: false, // skip rows where all cells are empty
coerceTypes: false, // convert '42' → 42, '1.5' → 1.5
);
use Nalabdou\Algebra\Csv\Contract\CsvAdapterInterface;
function registerAdapters(CsvAdapterInterface ...$adapters): void {
foreach ($adapters as $priority => $adapter) {
Algebra::adapters()->register($adapter, priority: $priority);
}
}
use Nalabdou\AlgebraSymfony\Attribute\AsAlgebraAdapter;
use Nalabdou\Algebra\Csv\CsvFileAdapter;
use Nalabdou\Algebra\Csv\ValueObject\CsvOptions;
#[AsAlgebraAdapter(priority: 50)]
final class AppCsvAdapter extends CsvFileAdapter
{
public function __construct()
{
parent::__construct(new CsvOptions(coerceTypes: true, skipEmpty: true));
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.