我是靠谱客的博主 冷艳皮卡丘,最近开发中收集的这篇文章主要介绍php Foreach 和 迭代器,PHP迭代器和迭代使用方法详解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

这次给大家带来PHP迭代器和迭代使用方法详解,PHP迭代器和迭代使用的注意事项有哪些,下面就是实战案例,一起来看一下。

PHP的面向对象引擎提供了一个非常聪明的特性,就是,可以使用foreach()方法通过循环方式取出一个对象的所有属性,就像数组方式一样,代码如下:class Myclass{

public $a = 'php';

public $b = 'onethink';

public $c = 'thinkphp';

}

$myclass = new Myclass();

//用foreach()将对象的属性循环出来

foreach($myclass as $key.'=>'.$val){

echo '$'.$key.' = '.$val."
";

}

/*返回

$a = php

$b = onethink

$c = thinkphp

*/

如果需要实现更加复杂的行为,可以通过一个iterator(迭代器)来实现//迭代器接口

interface MyIterator{

//函数将内部指针设置回数据开始处

function rewind();

//函数将判断数据指针的当前位置是否还存在更多数据

function valid();

//函数将返回数据指针的值

function key();

//函数将返回将返回当前数据指针的值

function value();

//函数在数据中移动数据指针的位置

function next();

}

//迭代器类

class ObjectIterator implements MyIterator{

private $obj;//对象

private $count;//数据元素的数量

private $current;//当前指针

function construct($obj){

$this->obj = $obj;

$this->count = count($this->obj->data);

}

function rewind(){

$this->current = 0;

}

function valid(){

return $this->current < $this->count;

}

function key(){

return $this->current;

}

function value(){

return $this->obj->data[$this->current];

}

function next(){

$this->current++;

}

}

interface MyAggregate{

//获取迭代器

function getIterator();

}

class MyObject implements MyAggregate{

public $data = array();

function construct($in){

$this->data = $in;

}

function getIterator(){

return new ObjectIterator($this);

}

}

//迭代器的用法

$arr = array(2,4,6,8,10);

$myobject = new MyObject($arr);

$myiterator = $myobject->getIterator();

for($myiterator->rewind();$myiterator->valid();$myiterator->next()){

$key = $myiterator->key();

$value = $myiterator->value();

echo $key.'=>'.$value;

echo "
";

}

/*返回

0=>2

1=>4

2=>6

3=>8

4=>10

*/

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

最后

以上就是冷艳皮卡丘为你收集整理的php Foreach 和 迭代器,PHP迭代器和迭代使用方法详解的全部内容,希望文章能够帮你解决php Foreach 和 迭代器,PHP迭代器和迭代使用方法详解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部