> -----Original Message-----
> From: Greg Beaver [mailto:[EMAIL PROTECTED] 
> Sent: Friday, June 02, 2006 10:39 PM
> To: Jason Karns
> Cc: php-general@lists.php.net
> 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

Reply via email to