> -----Original Message----- > From: Greg Beaver [mailto:cellog@xxxxxxx] > Sent: Friday, June 02, 2006 10:39 PM > To: Jason Karns > Cc: php-general@xxxxxxxxxxxxx > Subject: Re: SPL Iterator and Associative Array > > Jason Karns wrote: > > 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: > > <snip> > > <snip> > Hi Jason, > > The code you pasted is littered with fatal errors and bugs (I > marked one example with "^^" above). Please paste a real > batch of code that you've tested and reproduces the error and > that will be much more helpful. The PHP version would be > helpful to know as well. > > Greg > > -- > No virus found in this incoming message. > Checked by AVG Free Edition. > Version: 7.1.394 / Virus Database: 268.8.1/354 - Release > Date: 6/1/2006 > > <?php class Folio implements Iterator { private $projects = array(); private $valid = FALSE; public function __construct($file = null) { if(!is_null($file)) $this->load($file); } public function load($file){ ... $keys = array(); $values = array(); foreach ($projects as $project) { $small = array(); $big = array(); foreach ($xpath->query('showcase/images/screenshot/thumbnail',$project) as $img){ $small[] = $img->nodeValue;} foreach ($xpath->query('showcase/images/screenshot/src',$project) as $img){ $big[] = $img->nodeValue;} $keys[] = $xpath->query('@id',$project)->item(0)->nodeValue; $values[] = array( 'title'=>$xpath->query('showcase/title',$project)->item(0)->nodeValue, 'href'=>$xpath->query('livesite',$project)->item(0)->nodeValue, 'clip'=>$xpath->query('showcase/images/feature/thumbnail',$project)->item(0) ->nodeValue, 'big'=>$big, 'small'=>$small, 'text'=>$xpath->query('showcase/description',$project)->item(0)->nodeValue); } $this->projects = array_combine($keys,$values); } function &smalls($x=null){ if(is_null($x) or !key_exists($x,$this->projects)) $x = $this->key(); return $this->projects[$x]['small']; } function small_src($x=null){ if(is_null($x) or !key_exists($x,$this->projects)) $x = $this->key(); return current($this->projects[$x]['small']); } function small($x=null){ if(is_null($x) or !key_exists($x,$this->projects)) $x = $this->key(); return '<a href="'.$this->small_href().'" title="'.$this->small_title().'">'.$this->small_img($x).'</a>'; } } ?> <?php reset($folio->smalls()); while($s = current($folio->smalls())){ echo $folio->small(); next($folio->smalls()); } foreach($folio->smalls() as $s){ echo $folio->small(); } ?> Production server will be PHP 5.1.2, developing on 5.0.5 I am also considering making my own 'project' object and having Folio have an array of 'projects' rather than using the array of associative arrays. Would this provide a solution? Thanks, Jason
Attachment:
smime.p7s
Description: S/MIME cryptographic signature