Reply to Re: assigned values in 'ByRef' call

Your name:

Reply:


Posted by Darko on 11/06/07 20:09

On Nov 6, 9:06 pm, ZeldorBlat <zeldorb...@gmail.com> wrote:
> On Nov 6, 2:27 pm, Csaba Gabor <dans...@gmail.com> wrote:
>
> > In the following PHP code, the final printed line shows 'frob:
> > something'. Why is it not 'frob: else'? After all, if I replace the
> > first line with $frob = "something"; test ($frob); then the final
> > printed line does show 'frob: else'
>
> > Csaba Gabor from Vienna
> > PHP 5.2.4 on WinXP Pro
>
> > test ($frob = "something");
> > print "frob: $frob <br>\n";
>
> > function test(&$val) {
> > print "val pre: $val <br>\n";
> > $val = "else";
> > print "val post: $val <br>\n"; }
>
> It's because you're not really passing a variable -- you're passing
> the result of an expression. If you enable E_STRICT you'll get the
> following:
>
> Strict Standards: Only variables should be passed by reference
>
> Since you haven't passed a variable, modifying the value inside the
> function is only modifying the local value.

Yes, I've thought about it and was just coming back to brag about the
conclusion, but you were faster. In C++, this is not the behavior, but
the assignment operator returns the reference to the left parameter
instead, making it possible. In PHP, however, only the value (copy of
the value, if you like) is returned from the assignment operator,
which passes that as the argument, not the $frob variable.

[Back to original message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация