horat1us / map-iterator
Map 迭代器实现
1.0.1
2021-08-16 11:09 UTC
Requires
- php: >=7.4
Requires (Dev)
- phpstan/phpstan: ^0.12.94
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.6
This package is auto-updated.
Last update: 2024-09-16 18:23:01 UTC
README
在产生之前将内部迭代器值映射到映射器。
灵感来自 \FilterIterator 和 \CallbackFilterIterator。
安装
使用 composer
composer require horat1us/map-iterator:^1.0
使用方法
MapIterator
使用抽象方法在产生之前映射值。
<?php use Horat1us\Util\MapIterator; class IntegerPlusOneInterator extends MapIterator { public function map($item) { if (!is_int($item)) { throw new \InvalidArgumentException("Unable map not-integer item."); } return $item + 1; } } $numbers = [1,2,3]; $iterator = new IntegerPlusOneInterator(new \ArrayIterator($numbers)); print_r(iterator_to_array($iterator)); // Array ( [0] => 2, [1] => 3, [2] => 4 )
CallbackMapIterator (推荐)
使用回调在产生之前映射值。
<?php use Horat1us\Util\CallbackMapIterator; $numbers = [1,2,3]; $powCallback = static fn(int $number) => pow($number, $number); $iterator = new CallbackMapIterator(new \ArrayIterator($numbers), $powCallback); print_r(iterator_to_array($iterator)); // Array ( [0] => 1, [1] => 4, [2] => 27 )