* Thus wrote Daevid Vincent: > Yeah, I get what references are. The point is that when it was on the user > to decide, they could do it. Now that PHP5 makes you put the & in the > function declaration instead of the passing parameter, you don't know what > the user is going to send. Therefore it renders the & in the function > declaration a useless thing. > > I could have this function > > Function add (&$a, &$b) > { > return ($a + $b); > } > > And as a user I could use it like so: > > $x = 5; > $y = 10; > add($x, $y); > > Or I could also use it like this: > > add(5,10); > > But since the function is now responsible in PHP5 to use the & [since > passing add(&$x, &$y); is now invalid], it makes my function add basically > useless.
The only time you should pass by reference is when you plan on modifiying that variable and the caller is going to get a modified version back: function foo(&$modify_me) { $modify_me = 'another value'; } foo($var); // var contains now 'another value' Otherwise, always declare your functions as normal variables. Or for your example, you provided, that would mean that in your original code you had called your functions as: add(&5, &10); Which is obviosly wrong, so going that route wont really work. If you're concerned about memory usage, like why do I need to duplicate memory if I'm just passing variables that will just simply be read. Well, PHP takes that pretty much into consideration. And the only time a duplicate is created is when you modify the variable. If for example you have: $var = 'a really long string....'; And you assign that variable to something else: $var2 = $var; PHP doesn't allocate all the memory of var for that var2 until you try to modify the $var2. So not until you do something like: $var2 .= 'some more text'; PHP then will make a copy of the original $var, and then make modifications. The same principle applies to function parameters. Curt -- First, let me assure you that this is not one of those shady pyramid schemes you've been hearing about. No, sir. Our model is the trapezoid! -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php