다음 Iterator 클래스의 구현에서 메서드의 역할은?
다음 Iterator 클래스의 구현에서
valid()
메서드의 역할은?<?php
class NumberIterator implements Iterator {
private $numbers = [10, 20, 30];
private $position = 0;
public function current() {
return $this->numbers[$this->position];
}
public function key() {
return $this->position;
}
public function next() {
$this->position++;
}
public function rewind() {
$this->position = 0;
}
public function valid() {
return $this->position < count($this->numbers);
}
}
$iterator = new NumberIterator();
foreach($iterator as $key => $value) {
echo "$key: $value ";
}
?>
정답: B
valid()
메서드는 현재 포인터가 배열의 유효한 범위 내에 있는지 확인하여 foreach
루프의 종료 시점을 결정합니다.valid()
메서드의 작동 원리:1. 반복 시작:
foreach
시작 시 rewind()
호출로 $position = 0
2. 반복 조건 검사: 각 루프마다
valid()
호출⦁
$position < count($this->numbers)
조건 확인⦁
0 < 3
→ true
(첫 번째 반복 실행)⦁
1 < 3
→ true
(두 번째 반복 실행)⦁
2 < 3
→ true
(세 번째 반복 실행)⦁
3 < 3
→ false
(루프 종료)3. 루프 제어:
valid()
가 false
를 반환하면 foreach
루프 종료실행 결과: "0: 10 1: 20 2: 30 "
핵심 개념:
⦁
valid()
는 "더 반복할 요소가 있는가?"를 판단하는 메서드⦁ 포인터가 배열 경계를 벗어나면
false
반환하여 무한 루프 방지⦁
foreach
가 언제 멈춰야 할지 알려주는 중요한 역할
💡 학습 팁
이 문제를 포함한 PHP 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.