I found [url=http://php.net/manual/en/language.variables.scope.php]this[/url] in the php.net user-supplied comments [code] <?php function &teleport($vars = null){ static $toSave = array(); if($vars){ foreach($vars as $k=>&$v) $toSave[$k] = $v; } return($toSave); } function myFuncA(){ extract(teleport(),EXTR_REFS); $a = array('a'=>1,'b'=>2); $b = "An arbitrary value of no consequence\n"; teleport(array('a'=>$a,'b'=>$b)); } function myFuncB(){ extract(teleport(),EXTR_REFS); $b = "Now this is of Consequence\n"; $c = "Another of Consequence\n"; teleport(array('c'=>$c)); } function myFuncC(){ extract(teleport(),EXTR_REFS); // $a,$b,$c are now in current scope print_r(get_defined_vars()); print_r($a); echo($b); echo($c); } myFuncA(); myFuncB(); myFuncC(); ?> [/code] Might be useful. Also of note is using "[url=http://php.net/manual/en/function.extract.php]extract[/url]" function to dump an associative array directly into the local symbol table, which simplifies what I suggested (although you probably won't want ALL of your globals dumped in that way). This post is from -- http://socoder.net/index.php?topic=2758