spl应用场景 -- IteratorIterator迭代器

spl应用场景 – IteratorIterator迭代器

* 1.介绍*
改迭代器接口,主要可以 “迭代” 迭代器, 例如
ArrayIterator
类结构如下:

IteratorIteratorimplements OuterIterator {

/* 方法 */

public __construct ( Traversable $iterator )

public mixed current ( void )

public Traversable getInnerIterator ( void )

public scalar key ( void )

public void next ( void )

public void rewind ( void )

public bool valid ( void )
 }

2.参考示例 枚举

<?php

class Enumerator extends IteratorIterator
 {    
    /**
     * Initial value for enumerator
     * @param int  
    */
     protected $start = 0;

    /**
     * @param int
     */
     protected $key = 0;

    /**
     * @param Traversable $iterator
     * @param scalar $start
     */
     public function __construct(Traversable $iterator, $start = 0)
     {
         parent::__construct($iterator);

        $this->start = $start;

        $this->key = $this->start;
     }

    public function key()
     {
         return $this->key;
     }

    public function next()
     {
         ++$this->key;

        parent::next();
     }

    public function rewind()
     {
         $this->key = $this->start;

        parent::rewind();
     }

}


$enumerator = new Enumerator(
        new ArrayIterator(['php', 'java', 'python']), 7000
 );

print_r(iterator_to_array($enumerator));

/* 输出
 *    array(3) { 
           7000 => 'php',
            7001 => 'java',
            7002 => 'python'
      }
 */

?>

总结:
1. new Enumerator()时候,传入是ArrayIterator 迭代器,其构造函数第一个参数类型是Traversable,主要判断迭代器是否支持foreach
2.IteratorIterator是众多迭代器继承的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值