graze/array-filter

File manipulation

v1.0.1 2016-02-23 13:19 UTC

This package is auto-updated.

Last update: 2024-03-29 02:47:38 UTC


README

68747470733a2f2f6d65646961322e67697068792e636f6d2f6d656469612f6c34316c4f6d34646131417672357569342f67697068792e676966

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

Array Filtering

Install

Via Composer

$ composer require graze/array-filter

Usage

Filter Factory

There is a factory which takes in a set of string definitions and creates filters based on each one

$config = [
    'name ~' => '/test.*/i',
    'ctime >' => '{date:yesterday:U}',
    'status in' => [1, 2],
];
$input = [[
    'name' => 'test1234',
    'ctime' => 142353782,
    'status' => 2,
]];
$factory = new FilterFactory(new ValueFactory());
$filter = $factory->createFilters($config);
$filtered = array_filter($input, $filter);

Respect/Validator and other callable functions Compatible

$filter = new AllOfFilter();
$filter->addFilter(new ClosureFilter('name', v::regex('/test.*/i')))
       ->addFilter(v::key('ctime', v::date()->between('yesterday', 'today'))
       ->addFilter(function (array $data) {
           return isset($data['status']) && in_array($data['status'], [1, 2]);
       });

$filtered = array_filter($input, $filter);

Testing

$ make
$ make test

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security related issues, please email security@graze.com instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.