php迭代器作用,PHP 迭代器的使用

Iterator - 最基本的迭代器

RecursiveIteratorIterator -用来遍历RecursiveIterators

FilterIterator  -对数据进行过滤,只返回相匹配的数据

LimitIterator - 对其数据的子集的迭代进行限制的过滤器

class BasicIterator implements Iterator{

private $key = 0;

private $data = array(

"hello","world","asd"

);

public function __construct(){

//foreach($data as $key => $value){

//echo $key;

//}

}

//返回迭代器第一个元素

public function rewind(){

$this->key = 0;

}

//返回当前元素

public function current(){

return $this->data[$this->key];

}

//返回当前元素的键

public function key(){

return $this->key;

}

//移动位置到下一个元素

public function next(){

$this->key++;

//next 来递增指针

return true;

}

//检查当前位置是否有效

public function valid(){

return isset($this->data[$this->key]);

}

}

$i = new BasicIterator();

// var_dump($i);

// foreach($i as $key => $value){

// echo $key."=====".$value;

// echo "";

// }

$i->rewind();

do{

echo $key = $i->key();

echo $value = $i->current();

}while($i->next() && $i->valid());

迭代器的重要特点就是递归

RecursiveIterator    是数据结构,目的是提供一个标准的方式

RecursiveIteratorIterator用于遍历数据结构,可用来遍历多重数组

$array = array(

"hello",array(

"world"

),array(

"how",

array("are","you")

),"donging"

);

//var_dump($array);

$rec = new RecursiveArrayIterator($array);

$res = new RecursiveIteratorIterator($rec);

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

echo "Depth".$res->getDepth()."";

echo "key-------------".$key."";

echo "value--------".$value."";

}

FilterIterator 对迭代进行过滤,跳过不符合条件的值,通过添加一个accept方法,这个方法必须返回一个bool值

class EvenFilterIterator extends FilterIterator{

public function accept(){

$iterator = $this->getInnerIterator();//获取内部迭代器

$key = $iterator->key();

if($key%2==0){

return true;

}

return false;

}

}

$a = array(

0 => "hello",

1 => "fuck",

2 => "you",

3 => "shit"

);

$iterator = new ArrayIterator($a);

$filter = new EvenFilterIterator($iterator);

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

echo $key."==="."$value";

}

LimitIterator返回数组中 0-2 的元素

$array = array(

"hello",

"world",

"how",

"are",

"you",

"doing?"

);

$iterator = new ArrayIterator($array);

$limitItreator = new LimitIterator($iterator,0,2);

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

echo "$key------$value";

}

//

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值