references in arrays

php.internals

Ron Korving

20 years ago
Hi, For performance' sake, I have to know if this is true: Is it the case that when I do this: <?php $array = array("one" => array(0,1,2), "two" => array(4,5,6)); $one = $array["one"]; ?> That $one is not a copy, but a reference to $array["one"] and will only become a copy when I alter the contents of $one? I know this is the case for regular variables, but does this also go for contents of arrays? If not, I need to use the ampersand like I used to. But if it really is just a reference, that would be good to know as I shouldn't be using the ampersand at all (mistakingly thinking it's a performance advantage when it's actually not). Thanks, Ron

Zeev Suraski

20 years ago
At 13:35 15/09/2005, Ron Korving wrote:
>Hi, > >For performance' sake, I have to know if this is true: > >Is it the case that when I do this: > ><?php > $array = array("one" => array(0,1,2), "two" => array(4,5,6)); > $one = $array["one"]; >?> > >That $one is not a copy, but a reference to $array["one"] and will only >become a copy when I alter the contents of $one?
That's correct.
>I know this is the case for >regular variables, but does this also go for contents of arrays? If not, I >need to use the ampersand like I used to. But if it really is just a >reference, that would be good to know as I shouldn't be using the ampersand >at all (mistakingly thinking it's a performance advantage when it's actually >not).
Generally, using & where it's not necessary is more often than not a performance disadvantage, and not an advantage. You should never use & for better performance, only if you need it for applicative usage. The engine would do its best to do the least copying on its own. Zeev

Ron Korving

20 years ago
Perfect :) I've been doing it wrong all the time, thinking I was improving performance. It's good to know how things really work under the hood. Thanks, Ron "Zeev Suraski" <zeev@zend.com> schreef in bericht news:5.1.0.14.2.20050915141221.0605b540@localhost...
> At 13:35 15/09/2005, Ron Korving wrote: > >Hi, > > > >For performance' sake, I have to know if this is true: > > > >Is it the case that when I do this: > > > ><?php > > $array = array("one" => array(0,1,2), "two" => array(4,5,6)); > > $one = $array["one"]; > >?> > > > >That $one is not a copy, but a reference to $array["one"] and will only > >become a copy when I alter the contents of $one? > > That's correct. > > >I know this is the case for > >regular variables, but does this also go for contents of arrays? If not,
I
> >need to use the ampersand like I used to. But if it really is just a > >reference, that would be good to know as I shouldn't be using the
ampersand
> >at all (mistakingly thinking it's a performance advantage when it's
actually
> >not). > > Generally, using & where it's not necessary is more often than not a > performance disadvantage, and not an advantage. You should never use &
for