반복 가능
iterable은 foreach() 루프를 통해 반복될 수 있는 모든 값이다.
iterable 의사 유형은 PHP 7.1에서 도입되었으며 함수 인수 및 함수 반환 값에 대한 데이터 유형으로 사용할 수 있다.
Iterable 사용
키워드 iterable는 함수 인수의 데이터 유형 또는 함수의 반환 유형으로 사용할 수 있다.
반복 가능한 함수 인수 사용
PHP
<?php function printIterable(iterable $myIterable) { foreach($myIterable as $item) { echo $item; } } $arr = ["a", "b", "c"]; printIterable($arr); ?>
기본 예시
abc반복 가능한 반환
PHP
<?php function getIterable():iterable { return ["a", "b", "c"]; } $myIterable = getIterable(); foreach($myIterable as $item) { echo $item; } ?>
기본 예시
abcIterable 생성
배열
모든 배열은 반복 가능하므로 모든 배열은 반복 가능이 필요한 함수의 인수로 사용할 수 있다.
반복자
반복자
인터페이스 를 구현하는 모든 객체 Iterator는 iterable이 필요한 함수의 인수로 사용할 수 있다.
반복자는 항목 목록을 포함하고 항목을 반복하는 메서드를 제공한다.
목록의 요소 중 하나에 대한 포인터를 유지한다.
목록의 각 항목에는 항목을 찾는 데 사용할 수 있는 키가 있어야한다.
반복자에는 다음 메서드가 있어야한다.
- current()- 포인터가 현재 가리키고 있는 요소를 반환합니다. 모든 데이터 유형이 될 수 있다.
- key()목록의 현재 요소와 연결된 키를 반환합니다. 정수, 부동 소수점, 부울 또는 문자열만 가능하다.
- next()포인터를 목록의 다음 요소로 이동한다.
- rewind()포인터를 목록의 첫 번째 요소로 이동한다.
- valid()내부 포인터가 어떤 요소도 가리키지 않는 경우(예: 목록 끝에서 next()가 호출된 경우) false를 반환해야한다. 다른 경우에는 true를 반환한다.
PHP
<?php class MyIterator implements Iterator { private $items = []; private $pointer = 0; public function __construct($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() { return $this->pointer < count($this->items); } } function printIterable(iterable $myIterable) { foreach($myIterable as $item) { echo $item; } } $iterator = new MyIterator(["a", "b", "c"]); printIterable($iterator); ?>
기본 예시
abc참고
W3C School - PHP Iterables
W3C School - PHP Tryit Editor