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. Linux下查看使用的是哪种shell的方法汇总【转】

    转自:http://www.jb51.net/LINUXjishu/247797.html 查看当前发行版可以使用的shell 复制代码 代码如下: [root@localhost ~]$ cat / ...

  2. (六)kernel中文件的读写操作可以使用vfs_read()和vfs_write

    需要在Linux kernel--大多是在需要调试的驱动程序--中读写文件数据.在kernel中操作文件没有标准库可用,需要利用kernel的一些函数,这些函数主要有: filp_open() fil ...

  3. win端git连接私服仓库+上传本地项目+从服务器下载文件到win

    win端git连接私服仓库: 1.win端 检查c:/Users/用户/.ssh/目录下是否有config文件(!!!没有任何后缀名).如果没有则新建config文件,然后修改添加如下内容: Host ...

  4. phoronix-test-suite测试云服务器

    centos系统 phoronix-test-suite是目前Linux下比较常用的性能测试软件. 使用phoronix-test-suite条件前提:需要安装php5,需要PHP都DOM扩展 因为是 ...

  5. 4.flask数据库

    1.安装MySQL 直接去下载即可,如果是windows建可以下载msi,一路next即可.我已经安装过了,这里就不再演示了. 最后使用Navicat连接测试一下,我这里是没有问题的 2.SQLAlc ...

  6. selenium 消息框元素定位处理

    以下内容来自于“风少”的博客 <元素定位:selenium消息框处理 (alert.confirm.prompt)> 基础普及 alert对话框 .细分三种,Alert,prompt,co ...

  7. SPOJ - AMR11H

    Array Diversity Time Limit: 404MS   Memory Limit: 1572864KB   64bit IO Format: %lld & %llu Submi ...

  8. Selenium2+python自动化27-查看selenium API【转载】

    前言 前面都是点点滴滴的介绍selenium的一些api使用方法,那么selenium的api到底有多少呢?本篇就叫大家如何去查看selenium api,不求人,无需伸手找人要,在自己电脑就有. p ...

  9. [转]CreateDIBitmap与CreateDIBSection

    首先明确最主要区别:CreateDIBitmap创建的是设备相关位图句柄 - HBITMAP.                               CreateDIBSection创建的是设备 ...

  10. 【转】vector用法

    原博地址:http://www.cnblogs.com/wang7/archive/2012/04/27/2474138.html 在c++中,vector是一个十分有用的容器,下面对这个容器做一下总 ...