PHP5实现foreach语言结构遍历一个类

创建一个类集成Iterator接口,并实现Iterator里面的方法即可,下面见实例代码实现

<?php
class Test implements Iterator
{
public $item = null;
public $step = 0;
public $key = 0;
public function __construct(array $item=array())
{
$this->setItem($item);
} public function setItem($item=array())
{
// 设置对象属性
$this->item = $item?$item:range(1,8);
return $this;
}
public function next()
{
$this->step = $this->step+1;
echo "当前第{$this->step}步,执行".__METHOD__."方法<br>";
++$this->key;
// 设置下次指针
} public function current()
{
$this->step = $this->step+1;
echo "当前第{$this->step}步,执行".__METHOD__."方法<br>";
return $this->item[$this->key];
// 返回当前指针的值
} public function valid()
{
$this->step = $this->step+1;
echo "当前第{$this->step}步,执行".__METHOD__."方法<br>";
return isset($this->item[$this->key]);
// 验证当前指针的值是否存在
}
public function rewind()
{
$this->step = $this->step+1;
echo "当前第{$this->step}步,执行".__METHOD__."方法<br>";
$this->key = 0;
// 指针的重置
}
public function key()
{
$this->step = $this->step+1;
echo "当前第{$this->step}步,执行".__METHOD__."方法<br>";
return $this->key;
// 返回当前指针
}
} $test = new Test();
foreach($test as $i){
echo $i."<br/>";
}

输出结果如下:

  

PHP5实现foreach语言结构遍历一个类的实例的更多相关文章

  1. php入门 数据类型 运算符 语言结构语句 函数 类与面向对象

    php PHP-enabled web pages are treated just like regular HTML pages and you can create and edit them ...

  2. 遍历一个类的属性--并转换为Dictionary类型

    参考地址...http://www.cnblogs.com/xwgli/p/3306297.html 记录点滴...以前很少用泛型...HaHa... /// <summary> /// ...

  3. (五)羽夏看C语言——结构体与类

    写在前面   由于此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇 ...

  4. ANT使用 - 用for和foreach的方法遍历一个文件夹,查找到某个文件并删除

    转自:http://www.cnblogs.com/QAZLIU/p/3732329.html?utm_source=tuicool&utm_medium=referral build.xml ...

  5. 利用system.reflection遍历一个类的变量成员

    假设有下面一个类,在程序中已初始化,如何获取里面的变量成员name,age,onduty及其值呢? public class Employee { public string name; public ...

  6. C语言入门教程: 一个简单的实例

    对于学习要保持敬畏! 语言不只是一种工具,还是一种资源,因此,善待它,掌握它!   我们知道,对于未知通常都会充满好奇和畏惧,既想了解它,又害怕神秘面纱隐藏的不确定性.对于一门编程语言同样如此,我将以 ...

  7. 利用C语言结构体模拟一个简单的JavaBean

    利用C语言模拟一个Javabean 仅封装了,“无参构造函数”,“带参构造函数”,"toString方法" #include <stdio.h> struct User ...

  8. 判断一个类是否为另一个类的实例 instanceof关键字和isAssignableFrom方法的区别

    Which of the following is better? a instanceof B or B.class.isAssignableFrom(a.getClass()) The only ...

  9. 5_PHP数组_3_数组处理函数及其应用_5_数组遍历语言结构

    以下为学习孔祥盛主编的<PHP编程基础与实例教程>(第二版)所做的笔记. 数组遍历语言结构 1. foreach ( array as $value ) 程序: <?php $int ...

随机推荐

  1. 【POI2017||bzoj4726】Sabota?

    上学期putsnan过了一次,这学期认真写了一遍…… #include<bits/stdc++.h> #define N 500010 using namespace std; ]; ,n ...

  2. javascript 实现购物车页面

    跟商城有关系的网站,难免会有购物车的结账界面. 我用javascript实现了增加数量/减少数量,实时计算总金额,删除该商品,选中商品/反选商品/全选/全反选...的操作. 欢迎指点!~ 效果如图:( ...

  3. python的算法:二分法查找(2)--bisect模块

    Python 有一个 bisect 模块,用于维护有序列表.bisect 模块实现了一个算法用于插入元素到有序列表.在一些情况下,这比反复排序列表或构造一个大的列表再排序的效率更高.Bisect 是二 ...

  4. AC日记——[SCOI2012]喵星球上的点名 bzoj 2754

    2754 思路: AC自动机暴力处理匹配: 强大的ac自动机,强大的fail树,强大的map,强大的vector,强大的指针: 代码: #include <map> #include &l ...

  5. [libgdx游戏开发教程]使用Libgdx进行游戏开发(3)-给游戏添加一些控制功能

    每个游戏中都有一些只有程序员自己才知道的控制功能,比如增加金钱,满血复活,无视防御,不死等等. 都是为了方便自己调试而在测试阶段使用的功能. 正如上一章提到的:我们也需要加些只有程序员才知道的控制功能 ...

  6. scrapy 最新版本中文文档地址

    http://scrapy-chs.readthedocs.org/zh_CN/latest/

  7. inline select

  8. centos7下自定义服务启动和自动执行脚本

    systemctl list-units --type=service #查看所有已启动的服务 systemctl enable httpd.service #加入开机自启动服务 systemctl ...

  9. centos 7 下发送邮件设置

    使用sendmail发邮件的配置 yum -y install sendmailservice sendmail start vim body.txttest mail from linux. mai ...

  10. AtCoder - 2061 Tree Restoring

    Problem Statement Aoki loves numerical sequences and trees. One day, Takahashi gave him an integer s ...