zoukankan      html  css  js  c++  java
  • php设计模式-迭代器

    class CustomIterator implements Iterator
    {
        private $_data;
        private $_index = 0;
    
        public function __construct($data)
        {
            $this->_data = $data;
        }
    
        /**
         * 返回当前指针指向的元素
         * @return mixed
         */
        public function current()
        {
            return $this->_data[$this->_index];
        }
    
        /**
         * 指针向前推一位
         */
        public function next()
        {
            $this->_index ++;
        }
    
        /**
         * 重置指针,将指针指向第一个元素
         */
        public function rewind()
        {
            $this->_index = 0;
        }
    
        /**
         * 返回当前指针位置
         * @return int|mixed
         */
        public function key()
        {
            return $this->_index;
        }
    
        /**
         * 检测指针当前指向是否有效
         * @return bool
         */
        public function valid()
        {
            return count($this->_data) > $this->_index;
        }
    }
    
    $data = array(
        ['name' => 'zhangsan', 'age' => 12, 'career' => 'engineer'],
        ['name' => 'lisi', 'age' => 12, 'career' => 'engineer'],
        ['name' => 'waner', 'age' => 12, 'career' => 'engineer'],
        ['name' => 'faguan', 'age' => 12, 'career' => 'engineer'],
    );
    
    $obj = new CustomIterator($data);
    
    echo '<pre>';
    foreach ($obj as $key => $user) {
        print_r($user);
    }
    
    echo '---------------------------------------------------<br>';
    // 重置指针,相当于数组里的reset()方法
    $obj->rewind();
    
    while ($obj->valid())
    {
        print_r($obj->current());
        $obj->next();
    }
    

      结果:

    Array
    (
        [name] => zhangsan
        [age] => 12
        [career] => engineer
    )
    Array
    (
        [name] => lisi
        [age] => 12
        [career] => engineer
    )
    Array
    (
        [name] => waner
        [age] => 12
        [career] => engineer
    )
    Array
    (
        [name] => faguan
        [age] => 12
        [career] => engineer
    )
    ---------------------------------------------------
    Array
    (
        [name] => zhangsan
        [age] => 12
        [career] => engineer
    )
    Array
    (
        [name] => lisi
        [age] => 12
        [career] => engineer
    )
    Array
    (
        [name] => waner
        [age] => 12
        [career] => engineer
    )
    Array
    (
        [name] => faguan
        [age] => 12
        [career] => engineer
    )
    

      

  • 相关阅读:
    java提高篇(二四)-----HashSet
    链表(线性表)
    逆置线性表(线性表)
    Android布局_表格布局TableLayout
    Android布局_布局概述和LinearLayout布局
    Android_用户界面概述和数据单位
    Android_SDK的常用命令
    Android_程序结构分析
    CSS3_边框属性之圆角的基本图形案例
    CSS3_边框属性之圆角
  • 原文地址:https://www.cnblogs.com/xiangdongsheng/p/13353295.html
Copyright © 2011-2022 走看看