ID: 17997 Updated by: [EMAIL PROTECTED] Reported By: Xuefer at 21cn dot com Status: Verified Bug Type: Scripting Engine problem Operating System: All PHP Version: 4.3.3RC2-dev 5.0.0b2 New Comment:
Yes it refetches the variable passed to switch() to check whether it must be freed or not. Previous Comments: ------------------------------------------------------------------------ [2002-07-23 16:45:31] [EMAIL PROTECTED] the error message is on the closing '}' of the switch ... does switch re-evaluate its argument on termination? this is scary! ------------------------------------------------------------------------ [2002-06-26 11:25:14] Xuefer at 21cn dot com let the sample code say the problem <? error_reporting(E_ALL); $str1 = '.........$...'; $str = &$str1; $l = strlen($str); for ($i = 0; $i < $l; $i ++) { switch ($str{$i}) { case '$': $str = '123'; // change string $i = -1; // set to -1, for next loop to be 0 $l = strlen($str); // u know what this do break; default: echo $str{$i}; } } ?> ----------- result: ----------- ......... Notice: Uninitialized string offset: 9 in d:\myfile\wwwroot\our-sky.com\test.php on line 19 123 how ever, if i change $str = '123'; to: $s = '123'; $str = &$s; no wanning ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=17997&edit=1