On Wed, July 20, 2005 3:39 pm, Surendra Singhi said: > Hello, > > (1) > When I try this code: > <?php > > $var_global =" stuff"; > function f1() { > global $var_global; > $var_local = array(1,2); > $var_global =& $var_local; > } > f1(); > print_r($var_global); > ?> > I get the output: > > stuff > > where as I was expecting junk value or null. > > > My question is that, because the array is created locally and we > pass it by reference (without copying) so on the exit of function, its > value > is lost, but how does the global variable gets back its old value? > > Is it something which is not defined by the PHP language reference and is > implementation specific? And in this case instead of giving the global > variable some junk value or null value, the implementation decides to > store > the old values? PHP is not C. The & operator is not, as far as I know, defined for an array assignment operation. True, you can use & in the parameter list in some versions to keep PHP from copying the whole array. But that does not legitimatize what you are doing, I don't think. I could be 100% wrong. I've never even *TRIED* to use a reference to an array because I simply don't want to write code that confusing in the first place. That's why I use PHP to build web pages instead of C. YMMV -- Like Music? http://l-i-e.com/artists.htm -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php