smoren / array-mapper
Helper for mapping arrays
v0.1.4
2022-09-07 11:01 UTC
Requires
- php: >=7.2.0
- smoren/extended-exceptions: ^1.0
Requires (Dev)
- codeception/codeception: ^4.2.1
- codeception/module-asserts: ^2.0
- php-coveralls/php-coveralls: ^2.0
- phpstan/phpstan: ^1.8
- squizlabs/php_codesniffer: 3.*
README
Helper for mapping arrays
How to install to your project
composer require smoren/array-mapper
Unit testing
composer install
./vendor/bin/codecept build
./vendor/bin/codecept run unit tests/unit
Usage
use Smoren\ArrayMapper\ArrayMapper; $source = [ [ 'id' => 1, 'country' => 'Russia', 'city' => 'Moscow', ], [ 'id' => 2, 'country' => 'Russia', 'city' => 'Moscow', ], [ 'id' => 3, 'country' => 'Russia', 'city' => 'Tomsk', ], [ 'id' => 4, 'country' => 'Belarus', 'city' => 'Minsk', ], [ 'id' => 5, 'country' => 'Belarus', ], ]; $result = ArrayMapper::map($source, ['country', 'city'], true, true); print_r($result); /* Array ( [Russia] => Array ( [Moscow] => Array ( [0] => Array ( [id] => 1 [country] => Russia [city] => Moscow ) [1] => Array ( [id] => 2 [country] => Russia [city] => Moscow ) ) [Tomsk] => Array ( [0] => Array ( [id] => 3 [country] => Russia [city] => Tomsk ) ) ) [Belarus] => Array ( [Minsk] => Array ( [0] => Array ( [id] => 4 [country] => Belarus [city] => Minsk ) ) ) ) */ $result = ArrayMapper::map($source, ['country', 'city'], true, true, function($item) { return $item['id']; }); print_r($result); /* Array ( [Russia] => Array ( [Moscow] => Array ( [0] => 1 [1] => 2 ) [Tomsk] => Array ( [0] => 3 ) ) [Belarus] => Array ( [Minsk] => Array ( [0] => 4 ) ) ) */ $source = [ [ 'id' => 1, 'country' => 'Russia', 'city' => 'Moscow', ], [ 'id' => 2, 'country' => 'Russia', 'city' => 'Moscow', ], [ 'id' => 3, 'country' => 'Russia', 'city' => 'Tomsk', ], [ 'id' => 4, 'country' => 'Belarus', 'city' => 'Minsk', ], ]; $mapFields = [ 'country', function($item) { return $item['city'].'-'.$item['id']; } ]; $result = ArrayMapper::map($source, $mapFields, false, true, function($item) { return $item['id']; }); /* Array ( [Russia] => Array ( [Moscow-1] => 1 [Moscow-2] => 2 [Tomsk-3] => 3 ) [Belarus] => Array ( [Minsk-4] => 4 ) ) */