I'm going to try my best to explain what I'm trying to do. I have my own class that has an array member. This class itself implements Iterator. One of the fields in the array is itself an array that I would like to iterate over. Here's some code: class Folio implements Iterator { $projects = array( array( 'title'=>"", 'clip'=>"", 'small'=>array('1','2','3')), array( 'title'=>"", 'clip'=>"", 'small'=>array('0','1','2')) ); function title($x){ return current($this->projects[$]['small']); } function smalls($x){ return $this->projects[$x]['small']; } } And I'd like to do: foreach($folio->smalls() as $s){ echo $folio->title(); } However, at the moment, doing this doesn't increment through the 'small' array. It loops the correct number of times. But it only prints the first one. I assumed it was because it wasn't moving the internal array pointer. So I tried making the method smalls return a reference. Doing that made the following work perfectly: reset($folio->smalls()); while($s = current($folio->smalls())){ echo $folio->small(); next($folio->smalls()); } But trying the foreach loop printed the second, and third elements, then tried to output one passed the end of the array. >From what I understand, foreach simply expands to reset(); while($x=current()) {...; next();} What do I do? Jason Karns ~~~~~~~~~~~ The Ohio State University [www.osu.edu] Computer Science & Engineering [www.cse.osu.edu]
Attachment:
smime.p7s
Description: S/MIME cryptographic signature