downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | conferences | my php.net

search for in the

IteratorAggregate::getIterator> <Iterator::valid
[edit] Last updated: Fri, 26 Apr 2013

view this page in

The IteratorAggregate interface

(PHP 5 >= 5.0.0)

Introdução

Interface to create an external Iterator.

Resumo da Interface

IteratorAggregate extends Traversable {
/* Métodos */
abstract public Traversable getIterator ( void )
}

Exemplo #1 Basic usage

<?php
class myData implements IteratorAggregate {
    public 
$property1 "Public property one";
    public 
$property2 "Public property two";
    public 
$property3 "Public property three";

    public function 
__construct() {
        
$this->property4 "last property";
    }

    public function 
getIterator() {
        return new 
ArrayIterator($this);
    }
}

$obj = new myData;

foreach(
$obj as $key => $value) {
    
var_dump($key$value);
    echo 
"\n";
}
?>

O exemplo acima irá imprimir algo similar à:

string(9) "property1"
string(19) "Public property one"

string(9) "property2"
string(19) "Public property two"

string(9) "property3"
string(21) "Public property three"

string(9) "property4"
string(13) "last property"

Índice



add a note add a note User Contributed Notes IteratorAggregate - [1 notes]
up
4
Tab Atkins
1 year ago
Note that, at least as of 5.3, you still aren't allowed to return a normal Array from getIterator().

In some places, the docs wrap the array into an ArrayObject and return that.  DON'T DO IT.  ArrayObject drops any empty-string keys on the floor when you iterate over it (again, at least as of 5.3).

Use ArrayIterator instead.  I wouldn't be surprised if it didn't have its own set of wonderful bugs, but at the very least it works correctly when you use it with this method.

 
show source | credits | stats | sitemap | contact | advertising | mirror sites