The package provides:
ArrayHelper
that has static methods to work with arrays;ArraySorter
that has static methods for sort arrays;ArrayAccessTrait
provides the implementation for \IteratorAggregate, \ArrayAccess and \Countable;ArrayableInterface
andArrayableTrait
for use in classes who want to support customizable representation of their instances.
- PHP 7.4 or higher.
composer require yiisoft/arrays --prefer-dist
Array helper methods are static so usage is like the following:
$username = \Yiisoft\Arrays\ArrayHelper::getValue($_POST, 'username');
Overall the helper has the following method groups.
- getValue
- getValueByPath
- getColumn
- getObjectVars
- setValue
- setValueByPath
- remove
- removeByPath
- removeValue
- isIndexed
- isAssociative
- htmlDecode
- htmlEncode
- isIn
- isSubset
- index
- group
- filter
- map
- merge
- toArray
- keyExists
- pathExists
Array sorter has one static method which usage is like the following:
\Yiisoft\Arrays\ArraySorter::multisort($data, ['age', 'name'], [SORT_ASC, SORT_DESC]);
ArrayAccessTrait
provides the implementation for
\IteratorAggregate,
\ArrayAccess and
\Countable.
Note that ArrayAccessTrait
requires the class using it contain a property named data
which should be an array.
The data will be exposed by ArrayAccessTrait to support accessing the class object like an array.
Example of use:
use \Yiisoft\Arrays\ArrayAccessTrait;
class OfficeClassification implements \IteratorAggregate, \ArrayAccess, \Countable
{
use ArrayAccessTrait;
public array $data = [
'a' => 'Class A',
'b' => 'Class B',
'c' => 'Class C',
];
}
$classification = new OfficeClassification();
echo 'Count classes: ' . $classification->count() . "\n"; // 3
$iterator = $classification->getIterator();
while ($iterator->valid()) {
echo $iterator->current() . "\n"; // Class A, Class B, Class C
$iterator->next();
}
ArrayableInterface
and its implementation ArrayableTrait
intended for use in classes who want to support customizable representation of their instances.
Example of use:
use \Yiisoft\Arrays\ArrayableTrait;
use \Yiisoft\Arrays\ArrayableInterface;
class Car implements ArrayableInterface
{
use ArrayableTrait;
public string $type = 'Crossover';
public string $color = 'Red';
public int $torque = 472;
}
$car = new Car();
$data = $car->toArray(['type', 'color']); // ['type' => 'Crossover', 'color' => 'Red']
The package is tested with PHPUnit. To run tests:
./vendor/bin/phpunit
The package tests are checked with Infection mutation framework with Infection Static Analysis Plugin. To run it:
./vendor/bin/roave-infection-static-analysis-plugin
The code is statically analyzed with Psalm. To run static analysis:
./vendor/bin/psalm
The Yii Arrays is free software. It is released under the terms of the BSD License. Please see LICENSE
for more information.
Maintained by Yii Software.