Maison >développement back-end >tutoriel php >Itérateurs PHP et implémentation de l'itération

Itérateurs PHP et implémentation de l'itération

不言
不言original
2018-04-19 15:43:152524parcourir

Cet article présente principalement les itérateurs PHP ainsi que la mise en œuvre et l'utilisation de l'itération. Il analyse les concepts, principes, définitions et utilisation des itérateurs PHP sous forme d'exemples. Les amis dans le besoin peuvent se référer à

Les exemples. dans cet article, décrivez l'implémentation et l'utilisation des itérateurs et itérations PHP. Partagez-le avec tout le monde pour référence, comme suit :

Le moteur orienté objet de PHP fournit une fonctionnalité très intelligente, c'est-à-dire que vous pouvez utiliser la méthode foreach() pour récupérer tous les attributs d'un objet via une boucle , tout comme un tableau De la même manière, le code est le suivant :


class Myclass{
  public $a = 'php';
  public $b = 'onethink';
  public $c = 'thinkphp';
}
$myclass = new Myclass();
//用foreach()将对象的属性循环出来
foreach($myclass as $key.'=>'.$val){
  echo &#39;$&#39;.$key.&#39; = &#39;.$val."<br/>";
}
/*返回
  $a = php
  $b = onethink
  $c = thinkphp
*/


Si vous avez besoin d'implémenter des comportement, vous pouvez passer un iterator (itérateur) pour implémenter


//迭代器接口
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.&#39;=>&#39;.$value;
  echo "<br/>";
}
/*返回
  0=>2
  1=>4
  2=>6
  3=>8
  4=>10
*/

Recommandations associées :

[Interface prédéfinie php]Itérateur

Implémentation d'algorithme récursif et implémentation d'algorithme itératif pour le problème de tri rapide PHP

Comment utiliser l'interface itérateur de PHP Iterator

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:php enfinArticle suivant:php enfin