Re: nested, referenced foreach & implicit current array pointer issues

From: Date: Wed, 31 Jan 2007 18:41:42 +0000
Subject: Re: nested, referenced foreach & implicit current array pointer issues
References: 1 2 3 4 5  Groups: php.general 
Request: Send a blank email to php-general+get-248095@lists.php.net to get a copy of this message
speedy wrote: > Hello Martin, > > Wednesday, January 31, 2007, 4:50:22 PM, you wrote: > >> There is nothing wrong with the global keyword, just use $GLOBAL >> ['arr'] instead to avoid the reference, or create a copy by >> assignment. > > Yep, already did, 10x for the suggestion. :) > >> Anyway, I couldn't find this change of behaviour in the foreach in >> the changelog, but it seems it have been introduced around may >> 2005. Maybe is too late to complain, but, now that I know, I think >> this behaviour doesn't seem right. > > I'd rather see global being equal to $GLOBAL[] in combination with removal > of hidden current pointer from arrays. But I don't have much experience in > designing high-level languages nor did I give a lot of thought about it in the > global picture. :) regardless of whether your right or wrong from a theoretical/language POV (I didn't really understand your explaination completely - which is probably my lack of insight ;-) I would proffer the following: use of 'global' is bad practice in anything that resembles a complex/real application. your function has no control over the what $arr is and any piece of code code change $arr into *anything* at any time. instead I would suggest that your better off doing one of 2 things: 1. pass in the array to the function explicitly. 2. use a special function that can be called to retrieve the array from within your example function. bad advice? I'm open to being corrected :-) >

« previous php.general (#248095) next »