kuria / iterable
处理 PHP 迭代器和可迭代类型的实用工具
v1.0.1
2022-02-05 13:52 UTC
Requires
- php: >=7.1
Requires (Dev)
- kuria/dev-meta: ^0.6
This package is auto-updated.
Last update: 2024-09-22 17:48:57 UTC
README
处理 PHP 迭代器和可迭代类型的实用工具。
内容
特性
- 将可迭代值转换为数组
- 缓存迭代器
要求
- 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)
注意
您的数字可能会有所不同,但输出旨在证明生成的对确实已被缓存。