| 
	
 | 
 Posted by Bob Winter on 06/17/05 17:18 
nntp.charter.net wrote: 
> I want to write a trace procedure and call it with variable names, and I am  
> having trouble with the syntax.  My goal is to have a procedure that will  
> echo lines such as: 
>  
> Trace: $myvar="the contents of $myvar 
>  
> My attempt that didn't work is to write a function: 
>  
> function my_trace($m){ 
>    echo ("\n<br>TRACE: $m = "); 
>    eval("\$t=\"$m\";"); 
>    echo($t."<br>\n"); 
>  } 
>  
> and call it with statements like: 
>  
> my_trace("\$my_var"); 
> my_trace("\$_ENV[\"COMPUTERNAME\"]"); 
>  
> What am I doing wrong, and how should this be done?  Also, should I post to  
> a different group? 
>  
> Thanks, 
> Gil Grodsky 
> ggrodsky@charter.net 
 
 
Try this script, it works for me: 
 
$my_var = 'Hello world!'; 
 
function my_trace($m){                   // pay attention to the use of single vs double quotes throughout 
$q = substr($m, 1);                   // chop off the leading '$' in the variable name 
@eval("global \${$q};");              // need to use global to get value of local variables into this function 
                                     // also need @ to supress warning caused by brackets in superglobal variables 
eval("\$t = \${$q};");                // assign value of orginal $m to $t 
echo ("<br />TRACE: $m = $t<br />");  // output  
 
my_trace('$my_var');                     // note the use of single quotes here 
my_trace('$_ENV["COMPUTERNAME"]');       // note where the single quotes are used here 
 
Hope it helps, 
Bob
 
  
Navigation:
[Reply to this message] 
 |