Rumah > pembangunan bahagian belakang > tutorial php > 实例分享PHP迭代器接口Iterator用法分析

实例分享PHP迭代器接口Iterator用法分析

小云云
Lepaskan: 2023-03-18 20:32:02
asal
1420 orang telah melayarinya

本文主要介绍了PHP迭代器接口Iterator用法,结合实例形式分析了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 )

}

Salin selepas log masuk

下面是一个简单的例子演示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(&#39;dog&#39;, &#39;cat&#39;, &#39;pig&#39;);

  /*

   * 索引游标

   */

  private $_key = 0;

  /*

   * 执行步骤

   */

  private $_step = 0;

  /**

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

   *

   * @see TestIterator::rewind()

   */

  public function rewind() {

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

    $this->_key = 0;

  }

  /**

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

   *

   * @see TestIterator::valid()

   * @return bool

   */

  public function valid() {

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

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

  }

  /**

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

   *

   * @see TestIterator::next()

   */

  public function next() {

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

    $this->_key++;

  }

  /**

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

   *

   * @see TestIterator::current()

   * @return value

   */

  public function current() {

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

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

  }

  /**

   * 返回当前索引值

   *

   * @return key

   * @see TestIterator::key()

   */

  public function key() {

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

    return $this->_key;

  }

}

$iterator = new TestIterator();

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

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

}

?>

Salin selepas log masuk

以上例子将输出:


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

Salin selepas log masuk

相关推荐:

JavaScript ES6语法中iterator与for...of循环的示例详解

Java中关于迭代器Iterator的详解

分享Iterator与iterator接口的实例代码

Atas ialah kandungan terperinci 实例分享PHP迭代器接口Iterator用法分析. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Isu terkini
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan