sneskid Posted March 4, 2007 Share Posted March 4, 2007 say you have this: function abc($v=0){ static $r; if($v) $r = &$v; var_dump($r); } $test = 'hello'; abc(&$test); $test = 'bye'; abc(); output: string(5) "hello" NULL should be: string(5) "hello" string(3) "bye" Was this done for security reasons? or is it just a PHP limitation? Although less convenient, this bug can be worked around like so: function abc($v=0){ static $r; if($v) $r = $v; var_dump($r['test']); } $test = 'hello'; abc(array('test'=>&$test)); $test = 'bye'; abc(); output: string(5) "hello" string(3) "bye" So why won't static variable retain a direct reference?? Quote Link to comment Share on other sites More sharing options...
roopurt18 Posted March 4, 2007 Share Posted March 4, 2007 http://us2.php.net/manual/en/language.variables.scope.php#37427 Doesn't look like you can do it. Quote Link to comment Share on other sites More sharing options...
sneskid Posted March 4, 2007 Author Share Posted March 4, 2007 in case you are wondering, i tried having the & at the function params too, no effect. Having the function create the "array workaround" makes things nicer and more transparent: function abc(&$v=0){ static $r=array(); if($v) $r[]=&$v; // or just $r = array('test'=>&$v); else var_dump($r); } $test1 = 'hello'; $test2 = 'stuff'; abc($test1); abc($test2); $test1 = 'bye'; $test2 = 'things'; abc(); Quote Link to comment Share on other sites More sharing options...
sneskid Posted March 4, 2007 Author Share Posted March 4, 2007 thanks roopurt Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.