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

PHP 객체 반복

<시간/>

소개

PHP 5부터 객체의 보이는 모든 항목 목록을 반복할 수 있습니다. foreach를 사용하여 반복을 수행할 수 있습니다. 루프 및 반복자 상호 작용. IteratorAggregate도 있습니다. 이 용도로 사용할 수 있는 PHP 인터페이스

foreach 루프 사용

예시

<?php
class myclass{
   private $var;
   protected $var1;
   public $x, $y, $z;
   public function __construct(){
      $this->var="private variable";
      $this->var1=TRUE;
      $this->x=100;
      $this->y=200;
      $this->z=300;
   }
   public function iterate(){
      foreach ($this as $key => $value) {
         print "$key => $value\n";
      }
   }
}
$obj = new myclass();
foreach($obj as $key => $value) {
   print "$key => $value\n";
}
echo "\n";
$obj->iterate();
?>

출력

출력은 아래와 같습니다 -

x => 100
y => 200
z => 300

var => private variable
var1 => 1
x => 100
y => 200
z => 300

반복자 인터페이스 사용

이 인터페이스는 다음 예제에서 구현될 다음 추상 메서드를 정의합니다.

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 — 현재 위치가 유효한지 확인합니다.

다음 예제는 Iterator 인터페이스를 구현하여 객체 반복을 보여줍니다.

예시

<?php
class myclass implements Iterator{
   private $arr = array('a','b','c');
   public function rewind(){
      echo "rewinding\n";
      reset($this->arr);
   }
   public function current(){
      $var = current($this->arr);
      echo "current: $var\n";
      return $var;
   }
   public function key() {
      $var = key($this->arr);
      echo "key: $var\n";
      return $var;
   }
   public function next() {
      $var = next($this->arr);
      echo "next: $var\n";
      return $var;
   }
   public function valid(){
      $key = key($this->arr);
      $var = ($key !== NULL && $key !== FALSE);
      echo "valid: $var\n";
      return $var;
   }
}
$obj = new myclass();
foreach ($obj as $k => $v) {
   print "$k: $v\n";
}
?>

출력

위의 코드는 다음 결과를 생성합니다 -

rewinding
valid: 1
current: a
key: 0
0: a
next: b
valid: 1
current: b
key: 1
1: b
next: c
valid: 1
current: c
key: 2
2: c
next:
valid: