If anyone read this post, you probably already forgot about it, but I just wanted to clarify that I found the source of the problem and it was a coding mistake on my part, not a problem with PHP's array implementation.
Erik On Thursday, June 6, 2002, at 03:11 PM, Erik Price wrote: > Hi all, > > a quick question about using PHP's objects, specifically in terms of > the scope of class attributes: > > Normally, in PHP, a variable in a function is local to that function > and is NOT a reference to a similarly-named variable outside the > function, right? To the best of my knowledge, there are several ways > to allow access to an outside variable from within a function: > > 1) Declare the variable as global with the "global" keyword > 2) Access it from the $GLOBALS array > 3) Pass the variable to the function as a parameter > > and probably others, but it's really beside the point because I don't > have a question about normal functions. What I am really wondering is > if there is any formal "rules" about the scope of Class Attributes in > Class definitions and in methods -- they do not behave identical to > PHP's functions. For instance, I can access a class attribute from > within a method of that class without explicitly declaring that > attribute global inside the method, or without explicitly passing that > attribute as a parameter to the method. So they seem to behave as if > they are always global. > > But if I want to make a change to that class attribute from within a > method, am I affecting a copy of the class attribute, or the class > attribute itself? The reason I ask is because I have a Class that is > behaving oddly. Here is the relevant part of the code: > > Class Folder > { > // declare class attributes > var $contents = array(); > > // a method to add to $contents > function add_to_contents($item) > { > $this->contents[] = $item; > } > > // a method to remove from $contents > function rm_item($index) > { > unset($this->contents[$index]); > } > } > > > The crux of my question is, does this have the effect that it appears > to have? I am hoping someone with thorough understanding of the > internals of PHP can give me a definitive answer. My tests are coming > up with strange results, so I haven't figured it out on my own yet. > > Thanks in advance, > > > Erik > > PS: FYI, if you unset an array element, there is still an index for > that element -- the array does not reindex itself. A good solution to > this, that a fellow lister named Nathan gave me, is to array_push() a > dummy var onto the end of the array and then array_pop() it back off -- > this reindexes the array. But I am finding that somehow my arrays are > "remembering" old elements that I could have sworn I unset, so I am > asking the above question about the scope of class attributes in > methods. > > > ---- Erik Price Web Developer Temp Media Lab, H.H. Brown [EMAIL PROTECTED] > > > -- PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php