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

search for in the

Iterator::current> <Traversable
Last updated: Fri, 02 Jan 2009

view this page in

The Iterator interface

Увод

Interface for external iterators or objects that can be iterated themselves internally.

Синтаксис за класове

Iterator
Iterator implements Traversable {
/* Methods */
abstract public mixed Iterator::current ( void )
abstract public scalar Iterator::key ( void )
abstract public void Iterator::next ( void )
abstract public void Iterator::rewind ( void )
abstract public boolean Iterator::valid ( void )
}

Example #1 Basic usage

This example demonstrates in which order methods are called when foreach()ing over an iterator.

<?php
class myIterator implements Iterator {
    private 
$position 0;
    private 
$array = array(
        
"firstelement",
        
"secondelement",
        
"lastelement",
    );  

    public function 
__construct() {
        
$this->position 0;
    }

    function 
rewind() {
        
var_dump(__METHOD__);
        
$this->position 0;
    }

    function 
current() {
        
var_dump(__METHOD__);
        return 
$this->array[$this->position];
    }

    function 
key() {
        
var_dump(__METHOD__);
        return 
$this->position;
    }

    function 
next() {
        
var_dump(__METHOD__);
        ++
$this->position;
    }

    function 
valid() {
        
var_dump(__METHOD__);
        return isset(
$this->array[$this->position]);
    }
}

$it = new myIterator;

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

Примерът по-горе ще изведе нещо подобно на:

string(18) "myIterator::rewind"
string(17) "myIterator::valid"
string(19) "myIterator::current"
string(15) "myIterator::key"
int(0)
string(12) "firstelement"

string(16) "myIterator::next"
string(17) "myIterator::valid"
string(19) "myIterator::current"
string(15) "myIterator::key"
int(1)
string(13) "secondelement"

string(16) "myIterator::next"
string(17) "myIterator::valid"
string(19) "myIterator::current"
string(15) "myIterator::key"
int(2)
string(11) "lastelement"

string(16) "myIterator::next"
string(17) "myIterator::valid"

Съдържание



add a note add a note User Contributed Notes
Iterator
http://chanibal.net
29-Jan-2009 06:11
For anyone interested in how exactly does a iterator work in a foreach:

<?php
class SomeIterator implements Iterator {/*...implement...*/}

$it=new SomeIterator();
foreach(
$it as $key => $val) {
    print
"{$key}=>{$val}\n";
}

// works exactly the same as

$it=new SomeIterator();
for(
   
$it->rewind();
   
$it->valid();
   
$val=$it->current(), $key=$it->key(), $it->next()
) {
    print
"{$key}=>{$val}\n";
}

// and if someone forgot how for(;;) works...

$it=new SomeIterator();
$it->rewind;
while(
$it->valid()) {
   
$val=$it->current();
   
$key=$it->key();
   
$it->next();

    print
"{$key}=>{$val}\n";
}
?>

Iterator::current> <Traversable
Last updated: Fri, 02 Jan 2009
 
 
show source | credits | sitemap | contact | advertising | mirror sites