Path: csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!weretis.net!feeder4.news.weretis.net!news.mixmin.net!news2.arglkargh.de!news.n-ix.net!news.belwue.de!newsfeed.ision.net!newsfeed2.easynews.net!ision!newsfeed.arcor.de!newsspool3.arcor-online.net!news.arcor.de.POSTED!not-for-mail Content-Type: text/plain; charset="ISO-8859-1" Message-ID: <2977017.SPkdTlGXAF@PointedEars.de> From: Thomas 'PointedEars' Lahn Reply-To: Thomas 'PointedEars' Lahn Organization: PointedEars Software (PES) Date: Mon, 18 Jul 2011 17:19:33 +0200 User-Agent: KNode/4.4.11 Content-Transfer-Encoding: 7Bit Subject: Re: error message I don understand Newsgroups: comp.lang.php References: <4e2050e3$0$48996$dbd4f001@news.wanadoo.nl> <4e21e658$0$19265$a8266bb1@newsreader.readnews.com> <4e229b87$0$39844$dbd4d001@news.wanadoo.nl> <1661536.sHWYdyDnFx@PointedEars.de> <4e22f737$0$19237$a8266bb1@newsreader.readnews.com> Followup-To: comp.lang.php MIME-Version: 1.0 Lines: 44 NNTP-Posting-Date: 18 Jul 2011 17:19:33 CEST NNTP-Posting-Host: 0aa48f99.newsspool2.arcor-online.net X-Trace: DXC=mLa3;178l>Hk:C4l9A;OcOA9EHlD;3YcB4Fo<]lROoRA8kF Thomas 'PointedEars' Lahn wrote: >> In the end an oversimplified, wrong explanation. It is a syntactical >> requirement, not a functional one: >> >> $a = x(); > > Here you're assigning the return value of the function x() to the > variable $a. > >> $a[0] = 42; > > Here you're writing to the variable $a (or rather, in this case, to an > element of the array that is variable $a). > > Neither of these is trying to assign (write) a value to the return value > of the function call. Yes, it is. The return value of the function is a one-element array, and with that assignment I am writing to the same memory area (or another memory area that holds a copy of the former's content) by changing the first element of the array. IOW, the return value is _not_ read-only. > Whether you call the issue syntactical or not is just irrelevant and > messing about with semantics. You are mistaken. The issue is a syntactical one, not a functional one, because a function call (currently) cannot occur on the left-hand side of an assignment expression in PHP, *regardless* of the return value of function to be called. IOW, it does not make sense to say that "the return value is read-only" as the function is *never* *called* and *no* return value is obtained in the first place then. This is a rather important difference because syntax errors are detected by the parser upon (JIT-)compilation already. PointedEars -- Anyone who slaps a 'this page is best viewed with Browser X' label on a Web page appears to be yearning for the bad old days, before the Web, when you had very little chance of reading a document written on another computer, another word processor, or another network. -- Tim Berners-Lee