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, 17 May 2013

view this page in

Das IteratorAggregate-Interface

(PHP 5 >= 5.0.0)

Einführung

Interface, um einen externen Iterator zu erzeugen.

Interface-Übersicht

IteratorAggregate extends Traversable {
/* Methoden */
abstract public Traversable getIterator ( void )
}

Beispiel #1 Basisnutzung

<?php
class meineDaten implements IteratorAggregate {
    public 
$property1 "Öffentliche Eigenschaft eins";
    public 
$property2 "Öffentliche Eigenschaft zwei";
    public 
$property3 "Öffentliche Eigenschaft drei";

    public function 
__construct() {
        
$this->property4 "letzte Eigenschaft";
    }

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

$obj = new meineDaten;

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

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:

string(9) "property1"
string(19) "Öffentliche Eigenschaft eins"

string(9) "property2"
string(19) "Öffentliche Eigenschaft zwei"

string(9) "property3"
string(21) "Öffentliche Eigenschaft drei"

string(9) "property4"
string(13) "letzte Eigenschaft"

Inhaltsverzeichnis



add a note add a note User Contributed Notes IteratorAggregate - [1 notes]
up
5
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