kuria/iterable

处理 PHP 迭代器和可迭代类型的实用工具

v1.0.1 2022-02-05 13:52 UTC

This package is auto-updated.

Last update: 2024-09-22 17:48:57 UTC


README

处理 PHP 迭代器和可迭代类型的实用工具。

https://www.travis-ci.cn/kuria/iterable.svg?branch=master

内容

特性

  • 将可迭代值转换为数组
  • 缓存迭代器

要求

  • PHP 7.1+

用法

IterableHelper::toArray()

将可迭代值转换为数组。

<?php

use Kuria\Iterable\IterableHelper;

$array = IterableHelper::toArray($iterable);
  • 如果值已经是数组,则返回不变
  • 如果迭代器以相同键生成多个值,则数组中只保留最后一个值

IterableHelper::toList()

将可迭代值转换为具有连续整数索引的数组。

<?php

use Kuria\Iterable\IterableHelper;

$list = IterableHelper::toList($iterable);
  • 如果值已经是数组,则只返回其值(键将被丢弃)
  • 如果值是可遍历的,则返回其所有值

CachingIterator

CachingIterator 可用于包装任何 \Traversable 实例,以便它可以多次重绕、计数和迭代。

  • 在遍历可遍历时,其键值对被缓存在内存中
  • 缓存的键值对将在未来的迭代中重复使用
  • 当完全遍历可遍历对象时,对其的内部引用将被丢弃(因为它不再需要)

这主要用于与 生成器 或其他不可重绕的可遍历对象。

<?php

use Kuria\Iterable\Iterator\CachingIterator;

function generator()
{
    yield random_int(0, 99);
    yield random_int(100, 199);
    yield random_int(200, 299);
}

$cachingIterator = new CachingIterator(generator());

print_r(iterator_to_array($cachingIterator));
print_r(iterator_to_array($cachingIterator));
var_dump(count($cachingIterator));

输出

Array
(
    [0] => 29
    [1] => 107
    [2] => 249
)
Array
(
    [0] => 29
    [1] => 107
    [2] => 249
)
int(3)

注意

您的数字可能会有所不同,但输出旨在证明生成的对确实已被缓存。