PHP-如何获取变量';她叫什么名字?

PHP-如何获取变量';她叫什么名字?,php,variables,namespaces,Php,Variables,Namespaces,我想制作一个用于调试的小函数,它以人类可读的格式打印变量的内容 该函数基于CakePHP框架中的pr()快捷方式,即: 到目前为止,我有: function pr($var,$msg){ $pr_debug=true; if($pr_debug){ echo "<pre>"; if($msg) echo "<b>".$msg.": </b>"; if(gettype($var)=="array"

我想制作一个用于调试的小函数,它以人类可读的格式打印变量的内容

该函数基于CakePHP框架中的
pr()
快捷方式,即:

到目前为止,我有:

function pr($var,$msg){
    $pr_debug=true;
    if($pr_debug){
        echo "<pre>";
        if($msg) echo "<b>".$msg.": </b>";
        if(gettype($var)=="array" || gettype($var)=="object" ) echo "<br>";
        print_r($var);
        echo "</pre>";
    }
}
//应输出:

$foo = 'bar';
$baz = 'foo';
echo $$baz;   // bar
     ^^-- note the doubled $'s
那么,在我的函数中,如何将变量的名称作为字符串获取,以便输出它呢? i、 e.具有
pr($foo)我需要
“foo”
$name=“biz”;pr($$name)我需要
“biz”,
等等

最好我想要的东西,将工作,尽管PHP全局配置或任何(顺便说一句,我不是很了解,所以任何帮助全局的东西将不胜感激)

谢谢


额外:在stackoverflow,如何格式化源代码以获得PHP格式和颜色?现在,我简单地使用了文本区域中的工具栏并选择了“代码示例”…

您想要的是变量。。。但事实上,你并不想要它们。在现代编程中,它们几乎和“goto”一样糟糕:

function debug($out) {
   global $$out;
   echo $out, ': ', $$out;
}

$foo = 'bar';
debug($foo);
问题是,当您进入调试代码时,变量名称的“源”已经丢失,例如


这将不会输出“foo”作为名称,因为名称“$foo”未传递给函数。只有
$foo
的值,即
进入。

您应该接受字符串作为输入,而不是变量,然后使用
$$var
获取变量的值和
$var
获取变量的名称。请注意,当您有一个函数
函数foo($a)
$a
最初可能是函数的返回值、代数表达式、文字值或任何数量的非命名变量。我试图概述为什么在老问题上这不是一个有用的想法的一些原因:但是如果不调用debug($foo),我将其称为debug(“foo”),然后它会像预期的那样工作,呼应“foo:bar”,这就是我想要的!因此,我不需要直接将$var作为参数传递,而只需要修改我的函数以接收变量的名称(作为字符串),然后将其与$$一起使用以获取其内容。我说得对吗?是的,但请记住,在函数中,该变量无论如何都超出范围。
$foo = 'bar';
$baz = 'foo';
echo $$baz;   // bar
     ^^-- note the doubled $'s
function debug($out) {
   global $$out;
   echo $out, ': ', $$out;
}

$foo = 'bar';
debug($foo);