php

[php OOP] 3주차(6회차) / php 반복 가능한 객체(iterable)

namgi 2022. 9. 22. 16:30
반응형

이번 회차에선 iterable에 대해 배웠다.


iterable() 함수

'iterable()'은 'foreach()'문과 비슷한 함수이다.

배열을 반복해 주는 함수이다.

<?php
//printArr 함수의 조건 설정
function printArr(iterable $myIterable) {
  foreach($myIterable as $array) {
    echo $array;
  }
}

//'$name'변수에 이름 배열을 지정함
$name = ["남기, ", "지민, ", "서준"];
printArr($name);
?>

실행결과는 다음과 같다.

<?php
//Iterator 생성
class MyIterator implements Iterator {
  private $items = [];
  private $pointer = 0;

  public function __construct($items) {
    //'array_values()'는 '$items'가 숫자인지 확인
    $this->items = array_values($items);
  }

  public function current() {
    return $this->items[$this->pointer];
  }

  public function key() {
    return $this->pointer;
  }

  public function next() {
    $this->pointer++;
  }

  public function rewind() {
    $this->pointer = 0;
  }

  public function valid() {
    //'count()'는 목록에 있는 항목의 수를 나타냄
    return $this->pointer < count($this->items);
  }
}

//'iterable'함수를 사용함 
function printIterable(iterable $myIterable) {
  foreach($myIterable as $item) {
    echo $item;
  }
}

//iterator를 iterable로 사용
$iterator = new MyIterator(["a", "b", "c"]);
printIterable($iterator);
?>

 

  • current() - 포인터가 현재 가리키고 있는 요소를 반환한다.
  • key() - 목록의 현재 요소와 연결된 키를 반환한다. 
  • next() - 포인터를 목록의 다음 요소로 이동한다.
  • rewind() - 포인터를 목록의 첫 번째 요소로 이동한다.
  • valid() - 내부 포인터가 어떤 요소도 가리키지 않는 경우(끝에서 next()가 호출된 경우) false를 반환한다. 

실행결과는 다음과 같다.


이번회차에선 iterable에 대해 배웠다.

벌써 6회차이다.

다음 회차면 3주차도 마지막 회차이다.

반응형