Wallogit.com
2017 © Pedro Peláez
Provides a way to loop through nested arrays with any depth
There are times when there is a need to iterate over an array being unknown about the level of nested array it contains. Multi Level Array Iterator lets u do that. This functionality supports associative array and is properly tested., (*1)
$array = [
1,
2,
[
3,
4
],
[
5,
6,
[
7,
8
]
],
[
9,
[
[
10
]
],
11
]
];
foreach(\ArrayIterator\ArrayIteratorFacade::iterate($array) as $key => $ArrayItem)
{
echo $key . ' - ' . $ArrayItem->getValue() . "\n";
}
Result:
0 - 1
1 - 2
0 - 3
1 - 4
0 - 5
1 - 6
0 - 7
1 - 8
0 - 9
0 - 10
2 - 11
\ArrayIterator\ArrayIteratorFacade::iterate($array) returns a generator of ArrayElementInterface., (*2)
ArrayElementInterface provides
1. getValue():mixed
2. getKeyHierarchy():KeyHierarchyInterface
- getParentKey(int $parentLevel): string
- getHierarchyLevel(): int, (*3)
New instance of \ArrayIterator\Iterator\ArrayIterator can be created with \ArrayIterator\ArrayIteratorFactory which is accessible through
\ArrayIterator\ArrayIteratorLocator. Both the facade or locator way can be used to get an instance of ArrayIterator., (*4)
It includes special support for laravel framework. For its integration with Laravel's dependency injection container \ArrayIterator\ArrayIteratorServiceProvider is available which
can be included in the lists of service providers in config/app.php. After this, type hinting \ArrayIterator\ArrayIteratorFactory anywhere inside laravel app
will resolve into \ArrayIterator\ArrayIteratorFactory properly., (*5)
Note:
- For debugging purpose, echoing KeyHierarchyInterface prints out string representation of keys hierarchy
starting from root array separated by '-'.
- Upgraded to php7, (*6)