If Iterator::valid() returns false, the foreach() loop will be terminated.
(PHP 5, PHP 7, PHP 8)
Iterator::valid — 現在位置が有効かどうかを調べる
このメソッドは Iterator::rewind() および Iterator::next() の後にコールされ、 現在の位置が有効かどうかを調べます。
この関数にはパラメータはありません。
If Iterator::valid() returns false, the foreach() loop will be terminated.
If your class implements also ArrayAccess interface, you could use as valid() body
function valid(){
return $this->offsetExists($this->position);
}