Re: How to print variable name and contents

From: Date: Fri, 17 Jun 2005 15:51:40 +0000
Subject: Re: How to print variable name and contents
References: 1 2  Groups: php.general 
Request: Send a blank email to php-general+get-217139@lists.php.net to get a copy of this message
Bob Winter wrote:
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
Sorry, I was missing a closing '}' in my previous post -- it should have been: //////////////////////////////// $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
///////////////////////////// Bob

« previous php.general (#217139) next »