[PHP] Re: SPL Iterator and Associative Array

2006-06-05 Thread Adam Zey

Jason Karns wrote:

-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


If you're going to be using 5.1.2 in production, develop on 5.1.2. PHP 
doesn't guarantee backwards compatibility, especially in such a big 
change as 5.0.x - 5.1.x. Better to develop on 5.1.2 from the start than 
to develop on 5.0.5, put the code on 5.1.2, get a bunch of errors, and 
then have to develop again on 5.1.2 to fix the bugs. Not to mention that 
any testing done with 5.0.5 is invalid since you can't be sure that 
things will behave the same with the different production version. You 
may even waste time working around bugs in 5.0.5 that don't exist in 5.1.2.


Regards, Adam Zey.

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP] Re: SPL Iterator and Associative Array

2006-06-02 Thread Greg Beaver
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:
 
 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'];
 }
 }

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

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP] RE: SPL Iterator and Associative Array

2006-06-02 Thread Jason Karns
 -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


smime.p7s
Description: S/MIME cryptographic signature