> 백엔드 개발 > PHP 튜토리얼 > PHP 반복 가능한 인터페이스

PHP 반복 가능한 인터페이스

PHPz
풀어 주다: 2023-08-20 14:50:01
앞으로
934명이 탐색했습니다.

PHP Iterable接口

Iterator 인터페이스를 도입하면 추상적인 Traversable 인터페이스가 확장됩니다. PHP는 많은 공통 기능에 대해 여러 가지 내장 반복자(SPL 반복자라고 함)를 제공합니다. 예를 들어 ArrayIterator, DirectoryIterator 등이 있습니다. Iterator 인터페이스를 구현하는 사용자 클래스는 여기에 정의된 추상 메소드를 구현해야 합니다.

Syntax

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
}
로그인 후 복사

Methods

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

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

Iterator::next — 다음 요소로 이동합니다.

Iterator::rewind — 반복합니다. Iterator는 첫 번째 요소를 되감습니다.

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

IteratorAggregate 또는 Iterator 인터페이스를 구현할 때 implements 절에서 이름 앞에 나열되어야 합니다.

Iterator 예제

다음 PHP 스크립트에서 인터페이스를 구현하는 클래스에는 비공개 변수가 배열로 포함되어 있습니다. 반복자의 추상 메서드를 구현하면 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 ."</p><p>";
}
로그인 후 복사

while 루프에서 next() 메서드를 호출하여 반복을 수행할 수도 있습니다. 루프를 시작하기 전에 반복자를 되감기해야 합니다.

$it->rewind();
do {
   echo $it->key() . "=>" .$it->current() . "</p><p>";
   $it->next();
}
while ($it->valid());
로그인 후 복사

Output

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

0=>10
1=>20
2=>30
3=>40
로그인 후 복사

위 내용은 PHP 반복 가능한 인터페이스의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:tutorialspoint.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿