ishworkh/multi-level-array-iterator

提供了一种遍历任意深度的嵌套数组的方法

v2.0.0 2017-02-18 09:20 UTC

This package is not auto-updated.

Last update: 2024-09-23 15:19:12 UTC


README

有时候需要遍历一个包含未知嵌套层级的数组。多级数组迭代器允许您做到这一点。此功能支持关联数组,并且经过适当的测试。

基本用法

$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) 返回一个 ArrayElementInterface 的生成器。

ArrayElementInterface 提供

  1. getValue():mixed
  2. getKeyHierarchy():KeyHierarchyInterface
    • getParentKey(int $parentLevel): string
    • getHierarchyLevel(): int

可以使用 \ArrayIterator\ArrayIteratorFactory 创建新的 \ArrayIterator\Iterator\ArrayIterator 实例,该工厂可通过 \ArrayIterator\ArrayIteratorLocator 访问。可以使用外观或定位器方式来获取 ArrayIterator 的实例。

它包括对 Laravel 框架的特殊支持。为了与 Laravel 的依赖注入容器集成,提供了 \ArrayIterator\ArrayIteratorServiceProvider,可以将其包含在 config/app.php 中的服务提供者列表中。之后,在 Laravel 应用程序内部任何地方对 \ArrayIterator\ArrayIteratorFactory 的类型提示都将解析为正确的 \ArrayIterator\ArrayIteratorFactory

注意:- 为了调试目的,输出 KeyHierarchyInterface 将打印从根数组开始的键层次结构的字符串表示,键之间用 '-' 分隔。- 升级到 php7