Iterator

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök

Gränssnittet Iterator

(PHP 5, PHP 7, PHP 8)

Introduktion

Gränssnitt för externa iteratorer eller objekt som kan itereras internt.

Gränssnittssammanfattning

interface Iterator extends Traversable {
/* Metoder */
public current(): mixed
public key(): mixed
public next(): void
public rewind(): void
public valid(): bool
}

Fördefinierade iteratorer

PHP tillhandahåller redan ett antal iteratorer för många vardagliga uppgifter. Se SPL iterators för en lista.

Exempel

Exempel #1 Grundläggande användning

Detta exempel visar i vilken ordning metoder anropas när man använder `foreach` med en iterator.

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

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

    public function rewind(): void {
        var_dump(__METHOD__);
        $this->position = 0;
    }

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

    #[\ReturnTypeWillChange]
    public function key() {
        var_dump(__METHOD__);
        return $this->position;
    }

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

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

$it = new myIterator;

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

Ovanstående exempel kommer att ge något liknande:

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"

Se även

Se även objektiteration.

Innehållsförteckning

Sidslut

Orginalhemsidan på Engelska : https://www.php.net/manual/en/class.iterator.php
PHP
Språkreferens
Fördefinierade Gränssnitt och Klasser


Det här är en maskinöversättning av PHP-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/

Tack till Datorhjälp som har sponsrat Linux.se med webserver.