[classes et objets php] traversée

不言
Libérer: 2023-03-23 18:48:02
original
1510 Les gens l'ont consulté

Le contenu partagé avec vous dans cet article concerne le parcours [classes et objets php], qui a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer

Traverser des objets<.>

PHP 5 fournit un moyen de définir des objets afin qu'ils puissent être parcourus à travers une liste de cellules

Par défaut, toutes les propriétés visibles seront utilisées pour le parcours.

Example #1 简单的对象遍历(foreach 遍历所有其能够访问的可见属性。)<?phpclass MyClass{
    public $var1 = &#39;value 1&#39;;    public $var2 = &#39;value 2&#39;;    public $var3 = &#39;value 3&#39;;    
    protected $protected = &#39;protected var&#39;;    private   $private   = &#39;private var&#39;;    function iterateVisible() {
       echo "MyClass::iterateVisible:\n";       foreach($this as $key => $value) {           print "$key => $value\n";
       }
    }
}$class = new MyClass();foreach($class as $key => $value) {    print "$key => $value\n";
}echo "\n";$class->iterateVisible();?>
Copier après la connexion

Implémente l'interface Iterator (interface prédéfinie). Vous pouvez laisser l'objet décider comment parcourir et quelles valeurs sont disponibles à chaque fois qu'il est parcouru.

#接口摘要#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 )  //判断当前索引游标指向的元素是否有效  
}  

当一个实现了Iterator接口的对象,被foreach遍历时,会自动调用这些方法。

调用的循序是:rewind() -> valid() -> current() -> key() -> next()
Copier après la connexion
Example #2 实现 Iterator 接口的对象遍历<?phpclass MyIterator implements Iterator{
    private $var = array();    public function __construct($array)
    {
        if (is_array($array)) {            $this->var = $array;
        }
    }    public function rewind() {
        echo "rewinding\n";
        reset($this->var);
    }    public function current() {
        $var = current($this->var);        echo "current: $var\n";        return $var;
    }    public function key() {
        $var = key($this->var);        echo "key: $var\n";        return $var;
    }    public function next() {
        $var = next($this->var);        echo "next: $var\n";        return $var;
    }    public function valid() {
        $var = $this->current() !== false;        echo "valid: {$var}\n";        return $var;
    }
}$values = array(1,2,3);$it = new MyIterator($values);foreach ($it as $a => $b) {    print "$a: $b\n";
}?>
Copier après la connexion
Recommandations associées :

[Classes et objets php] Classes anonymes

[Classes et objets php] Surcharge

                                 

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal