PHP 4.0 Bug #6810 Updated: unset acts strange with a static variable

From: Date: Wed, 20 Sep 2000 22:02:51 +0000
Subject: PHP 4.0 Bug #6810 Updated: unset acts strange with a static variable
Groups: php.dev 
Request: Send a blank email to php-dev+get-33598@lists.php.net to get a copy of this message
ID: 6810 Updated by: stas Reported By: danbeck@dealnews.com Status: Closed Bug Type: *Function Specific Assigned To: Comments: Yes, this is how it is meant to work. unset is a bit weird, you probably shouldn't use it on "special variables" (statics, globals) unless you understand what you are doing. Use something like $a = "" or $a = false. Previous Comments: --------------------------------------------------------------------------- [2000-09-20 04:20:37] danbeck@dealnews.com The following code acts weird in respect to unsetting the variable. I'm trying to clarify unset in the PHP docs and I've come across this inconsistancy. Something similar to this was mentioned in bug report 2015, but I think this might be different. function foo() { static $a; $a++; echo "$an"; // let's unset it once it hits 3 if ($a == 3) { echo "unsetting #$an"; unset($a); } echo "value of a: $an"; } for ($i = 0; $i < 10; $i++) { foo(); } This generates the following output: 1 value of a: 1 2 value of a: 2 3 unsetting #3 value of a: 4 value of a: 4 5 value of a: 5 6 value of a: 6 7 value of a: 7 8 value of a: 8 9 value of a: 9 10 value of a: 10 When the static variable is unset, it's only unset inside the function. Instead of $a starting over at 1, it retains it's original value through each function call. Not sure if this is intended, but it's very strange behavior. --------------------------------------------------------------------------- Full Bug description available at: http://bugs.php.net/?id=6810

« previous php.dev (#33598) next »