Maison  >  Article  >  développement back-end  >  Itérateur PHP, implémentation d'itérations et analyse de l'utilisation Compétences PHP

Itérateur PHP, implémentation d'itérations et analyse de l'utilisation Compétences PHP

jacklove
jackloveoriginal
2018-06-27 17:38:341841parcourir

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 La méthode est la même, 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 un comportement plus complexe, vous pouvez implémenter via un iterator (itérateur)

//迭代器接口
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
*/

Articles qui pourraient vous intéresser :

Conseils PHP pour fonctionner MongoDB pour implémenter les fonctions d'ajout, de suppression, de modification et de vérification

Résumé des conseils courants pour faire fonctionner Redis avec PHP

Analyse des astuces php pour lire et écrire des fichiers Excel en utilisant le php natif




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