A filtering implementation for verifying correct data and performing typical modifications to arrays
Requires PHP 7.0 or newer and uses composer to install further PHP dependencies. See the composer specification for more details.
filter-arrays-php can be installed for use in your project using composer.
The recommended way of using this library in your project is to add a composer.json
file to your project. The following contents would add filter-arrays-php as a dependency:
composer require traderinteractive/filter-arrays
This filter will copy values from the input array into the resulting array using the destination key map.
$input = ['foo' => 1, 'bar' => 2];
$keyMap = ['FOO_VALUE' => 'foo', 'BAR_VALUE' => 'bar'];
$result = \TraderInteractive\Filter\Arrays::copy($input, $keyMap);
assert($result === ['FOO_VALUE' => 1, 'BAR_VALUE' => 2]);
This filter will copy values from each array within the input array into the resulting array using the destination key map.
$input = [
['foo' => 1, 'bar' => 2],
['foo' => 3, 'bar' => 4],
];
$keyMap = ['FOO_VALUE' => 'foo', 'BAR_VALUE' => 'bar'];
$result = \TraderInteractive\Filter\Arrays::copyEach($input, $keyMap);
assert($result === [['FOO_VALUE' => 1, 'BAR_VALUE' => 2], ['FOO_VALUE' => 3, 'BAR_VALUE' => 4]]);
This filter is a wrapper around in_array
including support for strict equality testing.
The following does a strict check for $value
against the 3 accepted values.
\TraderInteractive\Filter\Arrays::in($value, ['a', 'b', 'c']);
This filter verifies that the argument is an array and checks the length of the array against bounds. The default bounds are 1+, so an empty array fails by default.
The following checks that the $value
is an array with exactly 3 elements.
\TraderInteractive\Filter\Arrays::filter($value, 3, 3);
This filter flattens a multi-dimensional array to a single dimension. The order of values will be maintained, but the keys themselves will not. For example:
$value = \TraderInteractive\Filter\Arrays::flatten([[1, 2], [3, [4, 5]]]);
assert($value === [1, 2, 3, 4, 5]);
This filter is a wrapper to the PHP implode
function. It joins an array of strings with the optional glue string.
$value = \TraderInteractive\Filter\Arrays::implode(['lastname', 'email', 'phone'], ',');
assert($value === 'lastname,email,phone');
This filter pads an array to the specified length with a value. Padding optionally to the front or end of the array.
$value = \TraderInteractive\Filter\Arrays::pad([1, 2], 5, 0, \TraderInteractive\Filter\Arrays::ARRAY_PAD_FRONT);
assert($value === [0, 0, 0, 1, 2]);
This filter removes any duplicate values in the given array. Optionally throwing an exception if duplicate values are found.
$value = \TraderInteractive\Filter\Arrays::unique(['foo', 'bar', 'foo']);
assert($value === ['foo', 'bar']);
With a checkout of the code get Composer in your PATH and run: ``sh composer install ./vendor/bin/phpunit ./vendor/bin/phpcs
For more information on our build process, read through out our [Contribution Guidelines](./.github/CONTRIBUTING.md).