Hi,

I just ran into some strange behaviour, and I was hoping anyone of you
could confirm this ...

Take a look at the following code snippet ...

<?

$a = 'a';  $b = 'b';  $c = 'c';

$ar = array( 'a' => &$a, 'b' => &$b, 'c' => &$c );

function p( &$v ) { $v = 'x'; }

while( list( $k, $v ) = each( $ar ) ) {
  p( $v );
  print "$k = $v  ($a, $b, $c)\n";
}

?>

This does not do what I expected ...

output:

a = x  (a, b, c)
b = x  (a, b, c)
c = x  (a, b, c)

The first version of the example used a foreach() loop to go through the
hash key/value pairs. In the manual though I found 

Note:  Also note that foreach operates on a copy of the specified array,
not the array itself, therefore the array pointer is not modified as
with the each()  construct and changes to the array element returned are
not reflected in the original array.

So this explained why foreach did not return the references stored in
the hash. But it made me believe that each() did actually return the
keys and values that where in the hash ... so it should return me the
original references.

The only way I see how to go around this "strange behaviour" is to call
the function like this ...

p( $ar[$k] )

just ignoring the $v; which I must say just seems wrong :)

Can anyone comment on this ? ... Is this the way it should be ? Am I
doing something wrong here ? ... 

Thanks in advance

Christophe VG


-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to