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