PHP迭代器接口Iterator用法分析

2025-05-29 0 89

本文实例讲述了PHP迭代器接口Iterator用法。分享给大家供大家参考,具体如下:

PHP Iterator接口的作用是允许对象以自己的方式迭代内部的数据,从而使它可以被循环访问,Iterator接口摘要如下:

?

1

2

3

4

5

6

7

8

9

10

11

12
Iterator extends Traversable {

//返回当前索引游标指向的元素

abstract public mixed current ( void )

//返回当前索引游标指向的键

abstract public scalar key ( void )

//移动当前索引游标到下一元素

abstract public void next ( void )

//重置索引游标

abstract public void rewind ( void )

//判断当前索引游标指向的元素是否有效

abstract public boolean valid ( void )

}

下面是一个简单的例子演示Iterator的使用方法:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73
<?php

/**

* 该类允许外部迭代自己内部私有属性$_test,并演示迭代过程

*

* @author 疯狂老司机

*/

class TestIterator implements Iterator {

/*

* 定义要进行迭代的数组

*/

private $_test = array('dog', 'cat', 'pig');

/*

* 索引游标

*/

private $_key = 0;

/*

* 执行步骤

*/

private $_step = 0;

/**

* 将索引游标指向初始位置

*

* @see TestIterator::rewind()

*/

public function rewind() {

echo '第'.++$this->_step.'步:执行 '.__METHOD__.'<br>';

$this->_key = 0;

}

/**

* 判断当前索引游标指向的元素是否设置

*

* @see TestIterator::valid()

* @return bool

*/

public function valid() {

echo '第'.++$this->_step.'步:执行 '.__METHOD__.'<br>';

return isset($this->_test[$this->_key]);

}

/**

* 将当前索引指向下一位置

*

* @see TestIterator::next()

*/

public function next() {

echo '第'.++$this->_step.'步:执行 '.__METHOD__.'<br>';

$this->_key++;

}

/**

* 返回当前索引游标指向的元素的值

*

* @see TestIterator::current()

* @return value

*/

public function current() {

echo '第'.++$this->_step.'步:执行 '.__METHOD__.'<br>';

return $this->_test[$this->_key];

}

/**

* 返回当前索引值

*

* @return key

* @see TestIterator::key()

*/

public function key() {

echo '第'.++$this->_step.'步:执行 '.__METHOD__.'<br>';

return $this->_key;

}

}

$iterator = new TestIterator();

foreach($iterator as $key => $value){

echo "输出索引为{$key}的元素".":$value".'<br><br>';

}

?>

以上例子将输出:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17
第1步:执行 TestIterator::rewind

第2步:执行 TestIterator::valid

第3步:执行 TestIterator::current

第4步:执行 TestIterator::key

输出索引为0的元素:dog

第5步:执行 TestIterator::next

第6步:执行 TestIterator::valid

第7步:执行 TestIterator::current

第8步:执行 TestIterator::key

输出索引为1的元素:cat

第9步:执行 TestIterator::next

第10步:执行 TestIterator::valid

第11步:执行 TestIterator::current

第12步:执行 TestIterator::key

输出索引为2的元素:pig

第13步:执行 TestIterator::next

第14步:执行 TestIterator::valid

从以上例子可以看出,如果执行valid返回false,则循环就此结束。

希望本文所述对大家PHP程序设计有所帮助。

原文链接:http://blog.csdn.net/wuxing26jiayou/article/details/50977462

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 PHP迭代器接口Iterator用法分析 https://www.kuaiidc.com/92830.html

相关文章

发表评论
暂无评论