Ah, I understand now... This perhaps in a documentation problem then
after all, as there is no way to change this behavior cleanly that I can
see... What about making a copy of the array and all of the references
associated with that array instead of just using the real array?
Just a thought.
John
>What I meant by this is
>
>1) Each time before entering a foreach loop, php first tries
>to make a copy of
> the array being iterated.
>
>2) In case the array variable is either referenceing another
>variable or
> referenced by another variable, no copy is made here and
>the original
> array is used instead. Because of this behaviour, the
>original's internal
> array pointer increases in the loop eventually.
>
>And once a variable is referenced by another, both are treated
>as "reference" from then on. For example,
>
><?php
> $test = array();
> $test['a'] = 'a';
> $test['b'] = &$test['a'];
>
> debug_zval_dump($test);
>?>
>
>This script produces following output:
>
>array(2) refcount(2){
> ["a"]=>
> &string(1) "a" refcount(2)
> ["b"]=>
> &string(1) "a" refcount(2)
>}
>
>Moriyoshi
>
>
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php