Re: Tidying code for PHP5.0.5/PHP4.4.0
| From: | Jochem Maas | Date: | Tue, 20 Sep 2005 10:40:21 +0000 |
| Subject: | Re: Tidying code for PHP5.0.5/PHP4.4.0 | ||
| References: | 1 2 3 4 5 6 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-222746@lists.php.net to get a copy of this message | ||
Jasper Bryant-Greene wrote:
Jochem Maas wrote: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.Jasper Bryant-Greene wrote:Yes, but how can you modify "$a = 5" from within foo()? It's an expression, not something that can be modified. This one is, admittedly,From the PHP manual [2]: | the following examples of passing by reference are invalid: | | foo(bar()); // Produces fatal error since PHP 5.1.0 | foo($a = 5); // Expression, not variableif foo() expects one args by reference then why is doing: foo($a = 5); ..wrong? I always thought that the expression (in this form) 'returns' the variable? or does it need to be:?
kinda shaky.your example make it clear, thanks!I can understand that the following are wrong: foo(5); // not sure this is wrong.This is definitely wrong. For example:
<?php function foo(&$a) {$a = 6;} foo(5); ?> Is obviously impossible, as it tries to assign the value 6 to the constant value 5.