$ composer require designbeat/csv-matcher
See more in tests.
use DesignBeat\Matchers\CSV\CsvMatcher;
use DesignBeat\Matchers\CSV\CsvReader;
$scheme = [
0 => 'user.name',
1 => 'user.surname',
2 => 'city',
3 => 'extra.id',
4 => 'extra.x',
];
$matcher = new CsvMatcher(new CsvReader(__DIR__ . '/tests/cases/files/fixtures.csv'));
$result = $matcher->match($scheme);
Result is:
0 => [
'user' => [
'name' => 'Milan',
'surname' => 'Sulc',
],
'city' => 'HK',
'extra' => [
'id' => '123456',
'x' => 'foo',
],
],
1 => [
'user' => [
'name' => 'John',
'surname' => 'Doe',
],
'city' => 'Doens',
'extra' => [
'id' => '111111',
'x' => 'bar',
],
],