Re: Tidying code for PHP5.0.5/PHP4.4.0

From: Date: Tue, 20 Sep 2005 14:59:31 +0000
Subject: Re: Tidying code for PHP5.0.5/PHP4.4.0
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-222795@lists.php.net to get a copy of this message
Michael Sims wrote:
Jochem Maas wrote:
foo($a = 5);
by definition the expression is evaluated _before_ the function is called - so the expression is not passed to the function, the result of the expression is passed ... I was under the impression that the the expression evaluates to a 'pointer' (I'm sure thats bad terminology) to $a ... which can taken by reference by the function. possibly I am completely misunderstanding what goes on here.
When used as an expression, an assignment evaluates to whatever is on the right side of the assignment operator, not the left. Example:
right so $a evaluates to 5 and a reference to the value of $a is passed. what you say doesn't make sense (to me) take a look at the following: <? $b = 6; $c = "another string"; var_dump(($a = 5), $a, ($a = "some string"), $a, ($a = $b), ($a = $c), $b, $c); ?> as you see dumping the expression ($a = 5) and dumpimg plain old $a result in the same (as far as the output is concerned) its therefore not possible to conclude that
var_dump($a = 5); outputs int(5) var_dump($a = "some string"); outputs string(11) "some string" So, as far as foo() knows: foo($a = 5); and foo(5); are exactly the same...
I don't think they are, and you're examples don't prove it. Anyone care to come up with the proof. or explain to thick-eared old me where I am mistaken.


« previous php.general (#222795) next »