Computer >> 컴퓨터 >  >> 프로그램 작성 >> PHP

PHP 반복 가능한 인터페이스

<시간/>

소개

반복자 인터페이스 확장 추상 순회 가능 상호 작용. PHP는 많은 내장 반복기(SPL 반복기라고 함)를 제공합니다. ) 많은 일상적인 기능에 사용됩니다. 예는 ArrayIterator입니다. , DirectoryIterator 등. Iterator 인터페이스를 구현하는 사용자 클래스는 정의된 대로 추상 메소드를 구현해야 합니다.

구문

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

방법

Iterator::current — 현재 요소를 반환합니다.

Iterator::key — 현재 요소의 키를 반환합니다.

Iterator::next — 다음 요소로 앞으로 이동

Iterator::rewind — Iterator를 첫 번째 요소로 되감습니다.

Iterator::valid — 현재 위치가 유효한지 확인합니다.

IteratorAggregate를 구현할 때 또는 반복자 Traversable을 확장하는 인터페이스는 구현에서 이름 앞에 나열되어야 합니다. 조항.

반복자 예

다음 PHP 스크립트에서 Interface를 구현하는 클래스는 배열을 private 변수로 포함합니다. Iterator의 추상 메서드를 구현하면 foreach를 사용하여 배열을 탐색할 수 있습니다. next()와 함께 루프 방법.

예시

<?php
class myIterator implements Iterator {
   private $index = 0;
   private $arr = array(10,20,30,40);
   public function __construct() {
      $this->index = 0;
   }
   public function rewind() {
      $this->index = 0;
   }
   public function current() {
      return $this->arr[$this->index];
   }
   public function key() {
      return $this->index;
   }
   public function next() {
      ++$this->index;
   }
   public function valid() {
      return isset($this->arr[$this->index]);
   }
}
?>

foreach 사용 루프에서 MyIterator 개체의 배열 속성을 반복할 수 있습니다.

$it = new myIterator();
foreach($it as $key => $value) {
   echo "$key=>". $value ."\n";
}

next()를 클릭하여 반복을 수행할 수도 있습니다. while 루프의 메서드. 되감기하세요. 루프 시작 전의 반복자

예시

$it->rewind();
do {
   echo $it->key() . "=>" .$it->current() . "\n";
   $it->next();
}
while ($it->valid());

출력

두 경우 모두 배열 속성을 탐색하면 다음 결과가 표시됩니다.

0=>10
1=>20
2=>30
3=>40