Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:18959 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 38766 invoked by uid 1010); 15 Sep 2005 11:27:15 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 38751 invoked from network); 15 Sep 2005 11:27:15 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 15 Sep 2005 11:27:15 -0000 X-Host-Fingerprint: 195.225.34.5 fw01.axit.nl Received: from ([195.225.34.5:9183] helo=localhost.localdomain) by pb1.pair.com (ecelerity 2.0 beta r(6323M)) with SMTP id 9B/6F-41173-39A59234 for ; Thu, 15 Sep 2005 07:27:15 -0400 Message-ID: <9B.6F.41173.39A59234@pb1.pair.com> To: internals@lists.php.net References: <81.1E.41173.93F49234@pb1.pair.com> <5.1.0.14.2.20050915141221.0605b540@localhost> Date: Thu, 15 Sep 2005 13:19:00 +0200 Lines: 47 X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2800.1437 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1441 X-Posted-By: 195.225.34.5 Subject: Re: [PHP-DEV] references in arrays From: r.korving@xit.nl ("Ron Korving") 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" 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: > > > > > $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